49 lines
1.7 KiB
Python
49 lines
1.7 KiB
Python
import gradio as gr # 1. 'gr' 정의 (NameError 해결)
|
|
|
|
# 응원 함수
|
|
def cheer(name, level):
|
|
return f"{name} 화이팅! " + "🥳" * int(level)
|
|
|
|
# 별점 함수
|
|
def review(name, grade):
|
|
return f"{name} " + "⭐" * int(grade)
|
|
|
|
# BMI 함수
|
|
def bmi_calculator(height, weight):
|
|
if not height or not weight: # 입력값이 없을 때 방어
|
|
return "키와 몸무게를 모두 입력해주세요."
|
|
|
|
bmi = weight / ((height / 100) ** 2)
|
|
|
|
if bmi < 18.5: result = "저체중"
|
|
elif bmi < 22.9: result = "정상체중"
|
|
elif bmi < 24.9: result = "과체중"
|
|
else: result = "비만"
|
|
|
|
return f"결과: {result} (BMI: {bmi:.2f})"
|
|
|
|
# 인터페이스 구성
|
|
with gr.Blocks() as demo:
|
|
gr.Markdown("# 통합 도구 모음")
|
|
|
|
with gr.Tab("응원"):
|
|
c_name = gr.Textbox(label="이름")
|
|
c_level = gr.Slider(1, 5, step=1, label="응원강도")
|
|
c_out = gr.Textbox(label="결과")
|
|
gr.Button("보내기").click(fn=cheer, inputs=[c_name, c_level], outputs=c_out)
|
|
|
|
with gr.Tab("별점"):
|
|
r_name = gr.Textbox(label="음식명")
|
|
r_grade = gr.Slider(1, 5, step=1, label="만족도")
|
|
r_out = gr.Textbox(label="리뷰 결과")
|
|
# 2. 여기서 inputs에 r_name과 r_grade 두 개를 정확히 넣어줘야 합니다!
|
|
gr.Button("등록").click(fn=review, inputs=[r_name, r_grade], outputs=r_out)
|
|
|
|
with gr.Tab("BMI"):
|
|
h = gr.Number(label="키(cm)")
|
|
w = gr.Number(label="몸무게(kg)")
|
|
b_out = gr.Textbox(label="판정 결과")
|
|
gr.Button("계산").click(fn=bmi_calculator, inputs=[h, w], outputs=b_out)
|
|
|
|
# 3. 마지막에 괄호()를 붙여서 실행
|
|
demo.launch() |