강의 듣기 1주~3주 인증
https://www.gpters.org/dev/post/complete-1-4-weeks-KySmzWcG1DQuzF5
과제: BMI 계산기 만들기 (Streamlit)
알려주신대로 요구사항을 넣고 실행해 봤고 결론은 도출되었으나 많은 오류가 있었음.
Claude OPUS가 알려준 code
import streamlit as st
def calculate_bmi(height, weight):
"""
BMI를 계산하는 함수
"""
return weight / (height / 100) ** 2
def get_bmi_category(bmi):
"""
BMI 값에 따라 체중 범위와 색상을 반환하는 함수
"""
if bmi < 18.5:
return "저체중", "blue"
elif bmi < 23:
return "정상 체중", "green"
elif bmi < 25:
return "과체중", "orange"
else:
return "비만", "red"
def main():
st.title("BMI 계산기")
# 사용자로부터 이름 입력받기
name = st.text_input("이름을 입력하세요.")
# 사용자로부터 나이 입력받기 (0~120 사이의 값으로 제한)
age = st.number_input("나이를 입력하세요.", min_value=0, max_value=120, value=30)
# 사용자로부터 성별 선택받기
gender = st.radio("성별을 선택하세요.", ("남성", "여성"))
# 사용자로부터 키와 몸무게 입력받기
height = st.number_input("키 (cm)", min_value=1, max_value=300, value=160)
weight = st.number_input("몸무게 (kg)", min_value=1, max_value=500, value=60)
if st.button("BMI 계산"):
# BMI 계산
bmi = calculate_bmi(height, weight)
category, color = get_bmi_category(bmi)
# 사용자의 이름, 나이, 성별과 함께 BMI 계산 결과 출력
st.write(f"{name}님의 BMI는 {bmi:.2f}입니다. 나이는 {age}세, 성별은 {gender}입니다.")
st.write(f"{category}입니다.")
# BMI 값을 0~40 범위로 정규화하여 프로그레스 바로 표시
bmi_normalized = min(bmi / 40, 1.0)
st.progress(bmi_normalized, color=color)
# 세션에 사용자 데이터 저장
st.session_state.setdefault("bmi_data", []).append({
"name": name,
"age": age,
"gender": gender,
"bmi": bmi
})
# "데이터 저장" 버튼 클릭 시 파일에 데이터 저장
if st.button("데이터 저장"):
with open("bmi_data.csv", "a") as file:
for data in st.session_state.get("bmi_data", []):
file.write(f"{data['name']},{data['age']},{data['gender']},{data['bmi']:.2f}\n")
st.success("데이터가 저장되었습니다.")
# 도움말 섹션 추가
with st.expander("도움말"):
st.write("이 BMI 계산기는 사용자의 키와 몸무게를 입력받아 BMI 값을 계산합니다.")
st.write("BMI는 다음과 같이 분류됩니다:")
st.write("- 저체중: BMI < 18.5")
st.write("- 정상 체중: 18.5 <= BMI < 23")
st.write("- 과체중: 23 <= BMI < 25")
st.write("- 비만: BMI >= 25")
st.write("계산된 BMI 값은 프로그레스 바로 시각화되며, 체중 범위에 따라 색상이 다르게 표시됩니다.")
st.write("'데이터 저장' 버튼을 클릭하면 입력된 데이터가 'bmi_data.csv' 파일에 저장됩니다.")
if name == '__main__':
main()
—
여러 차례 오류가 지속되었지만 계속 하니 어찌 되었든 결과는 도출
안될 때 마다 다시 찍어서 보여주고 무엇이 오류인지 물어보았고, 반복을 통해 실
결과물 main · Streamlit
결과물에서도 오류 발견
결과물에서 아래와 같은 오류 발견
color인지를 못하기에 코드 수정이 필요한 상태.
st.progress(bmi_normalized, color=color) 부분을 아래처럼 color 파트를 제거고 바꿔 주었다.
==> st.progress(bmi_normalized)
그래도 마지막 에러는 수정하지 못한 채 끝남.
Selenium 시도
미션부여
1. 네이버 접속
2. 검색창에 원하는 검색어 입력
3. 검색 버튼 클릭
코드제안
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
# Set up the Chrome WebDriver
service = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service)
# Step 1: Navigate to Naver
driver.get("https://www.naver.com")
# Step 2: Find the search box and input a search query
# The search box can be located by the name attribute which is usually "query" on Naver.
search_box = driver.find_element(By.NAME, "query")
search_query = "your search keyword" # Replace with your desired search
search_box.send_keys(search_query)
# Step 3: Click the search button
# The search button can usually be activated by sending an ENTER key in the search box.
search_box.send_keys(Keys.RETURN)
# Remember to close the driver after your session
driver.quit()
결과: 자동으로 아래 창 열리고 자동으로 form 제출됨. 요청이 간 후, gpters를 자동으로 검색함. 헐.. 이게 되다니…