박승현
박승현
🏅 AI 마스터
🎻 루키 파트너
🔬 임팩트 찐친
🎨 미드저니 찐친
☕ 커피챗 오픈

2주차 기본 문법 실습 과제 풀이

1번 문제

문제 자체는 어렵지 않았습니다. 코드를 읽어보니 월요일에 배웠던 자료에 있는 내용이기도 했고

count += 1

이 “count = count + 1” 이라는 것도 배웠습니다.

처음에 만든 코드는 정수 외에 문자나 소수점이 있는 수를 입력하면 에러코드 1로 종료 되길래 그런 경우 숫자를 입력해달라고 다시 요청하는 걸로 수정해보았습니다.

2번 문제

좀 어려웠습니다. 그동안 다른 사례에서도 API key 관련 이야기만 나오면 왠지 위축되더라구요.

문제를 그대로 복붙해서 넣었는데 처음 코드가 에러가 났습니다.

1. requests가 설치되지 않아서.

아마 파이썬을 이번에 처음 설치한 분들도 같은 오류를 보실 것 같네요. requests가 설치 되지 않아서 입니다. 저도 클로드에게 물어보고 알았고 pip install로 설치하라고 해서 설치했습니다.

2. URL 형식 오류

이것도 아마 많은 분들이 보실 오류일 것 같습니다. 클로드가 이 부분을 답하는데 약간 오류가 있는 것 같습니다.

이 순서면 URL 뒤에 파라미터가 “도시 이름”, “API key”, “섭씨온도 사용”순으로 구성이되는데 URL 요청 형식을 한번 읽어보니 API key는 가장 마지막에 와야 했습니다. 실수를 왜 했는지 모르겠지만 제가 답을 찾아낸게 배운 거니까요.

어쨌든 클로드에게 사과(?)도 받고 잘 마무리했습니다. 결과는 잘나옵니다.

쉽지 않았지만 그래서 더 재밌었습니다.

3. 최종 코드

import requests
import json

# OpenWeatherMap API 설정
api_key = "API키가 입력되는 자리"  # 실제 API 키로 대체해야 합니다.
base_url = "http://api.openweathermap.org/data/2.5/weather"

# 사용자로부터 도시 이름 입력 받기
city_name = input("도시 이름을 입력하세요: ")

# API 요청 보내기
params = {
    "q": city_name,
    "units": "metric",  # 섭씨 온도 사용
    "appid": api_key
}

try:
    response = requests.get(base_url, params=params)
    response.raise_for_status()  # 요청 실패 시 예외 발생

    # JSON 데이터 파싱
    data = json.loads(response.text)

    # 필요한 정보 추출
    city = data["name"]
    temperature = data["main"]["temp"]
    humidity = data["main"]["humidity"]
    weather_description = data["weather"][0]["description"]

    # 결과 출력
    print(f"{city}의 현재 날씨 정보:")
    print(f"온도: {temperature}°C")
    print(f"습도: {humidity}%")
    print(f"날씨 상태: {weather_description}")

except requests.exceptions.RequestException as e:
    print("API 요청에 실패했습니다.")
    print(e)

except (KeyError, IndexError) as e:
    print("JSON 데이터 파싱 중 오류가 발생했습니다.")
    print(e)

정답과는 약간 다르긴 하네요. 저는 창에서 도시이름을 입력하면 결과값이 나오는 걸로 만들어줬습니다. 아직 잘 모르지만 json이 들어가는 것 보니 조금 더 복잡한 코드인것 같네요.

3
3개의 답글
지피터스 뉴스레터

이번 주 AI, 딱 쓸 것만

매주 월요일 오후,
읽고 바로 써먹을 AI 소식만