강의 듣기 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를 자동으로 검색함. 헐.. 이게 되다니…