
روز ۴۵ آموزش پایتون: پروژه کوچک نمایش وضعیت آب و هوا از API
یکی از جالبترین و کاربردیترین پروژههای عملی برای تقویت مهارتهای برنامه نویسی پایتون، کار با دادههای واقعی از APIهاست. در این پروژه قصد داریم یک برنامه بسازیم که وضعیت آب و هوا را از یک سرویس آنلاین دریافت کرده و به کاربر نمایش دهد. برای این کار از کتابخانه محبوب requests استفاده میکنیم که امکان ارسال درخواست HTTP و دریافت پاسخ از سرویسهای خارجی را فراهم میکند. دادههای دریافتی معمولاً در قالب JSON هستند، بنابراین دانش پردازش JSON برای استخراج اطلاعات مهم مانند دما، شرایط جوی، رطوبت و پیشبینیها بسیار حیاتی است. این پروژه کوچک به شما کمک میکند تا هم با APIها کار کنید و هم مهارتهای پردازش دادهها و مدیریت خطاها را در پروژههای واقعی تمرین کنید.
دریافت داده از API و پردازش JSON
برای شروع، ابتدا یک API آب و هوا مانند OpenWeatherMap یا هر سرویس رایگان مشابه را انتخاب میکنیم. پس از دریافت کلید API، با استفاده از کتابخانه requests درخواست HTTP به سرور ارسال میکنیم و دادههای JSON را دریافت میکنیم. این دادهها شامل اطلاعات متعددی هستند، از جمله دما، وضعیت آسمان، رطوبت، فشار هوا و حتی پیشبینیهای چند روز آینده. نمونه کد پایه برای دریافت دادهها از API به شکل زیر است:
import requests
api_key = "YOUR_API_KEY"
city = "Tehran"
url = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid={api_key}&units=metric"
response = requests.get(url)
if response.status_code == 200:
weather_data = response.json()
print("City:", weather_data['name'])
print("Temperature:", weather_data['main']['temp'], "°C")
print("Weather:", weather_data['weather'][0]['description'])
else:
print("خطا در دریافت دادهها:", response.status_code)در این مثال، ابتدا URL API با پارامترهای مورد نیاز ساخته میشود و سپس با requests.get دادهها دریافت میشوند. با استفاده از متد .json() دادهها به دیکشنری پایتون تبدیل شده و میتوانیم مقادیر مورد نظر را نمایش دهیم. استفاده از شرط status_code تضمین میکند که در صورت بروز مشکل در درخواست، پیام خطا به کاربر نمایش داده شود.
پردازش اطلاعات و نمایش کاربرپسند
دادههای خام JSON ممکن است برای کاربر نهایی قابل فهم نباشند، بنابراین پردازش آنها و تبدیل به خروجی خوانا اهمیت بالایی دارد. میتوان با استفاده از متغیرها و رشتههای فرمتشده، اطلاعاتی مانند دما، وضعیت آسمان، سرعت باد و رطوبت را در قالبی قابل خواندن نمایش داد. نمونه کد نمایش دادهها به شکل کاربرپسند:
city_name = weather_data['name']
temperature = weather_data['main']['temp']
description = weather_data['weather'][0]['description']
humidity = weather_data['main']['humidity']
wind_speed = weather_data['wind']['speed']
print(f"Weather Report for {city_name}")
print(f"Temperature: {temperature}°C")
print(f"Condition: {description.capitalize()}")
print(f"Humidity: {humidity}%")
print(f"Wind Speed: {wind_speed} m/s")استفاده از f-string باعث میشود متن خروجی خواناتر باشد و اطلاعات به شکل حرفهای نمایش داده شوند. این بخش از پروژه به شما نشان میدهد چگونه دادههای JSON را به خروجی قابل فهم تبدیل کنید.
مدیریت خطاها و دادههای نامعتبر
یکی از نکات مهم در پروژههای واقعی، مدیریت خطاهاست. ممکن است اتصال به اینترنت قطع شود، API پاسخ غیرمنتظره دهد یا شهر وارد شده توسط کاربر موجود نباشد. استفاده از ساختار try-except به ما اجازه میدهد برنامه پایدار و مقاوم باشد. نمونه کد مدیریت خطاها:
try:
response = requests.get(url, timeout=10)
response.raise_for_status()
weather_data = response.json()
except requests.exceptions.RequestException as e:
print("خطای اتصال به API:", e)
except KeyError as e:
print("داده مورد انتظار در JSON موجود نیست:", e)این روش تضمین میکند برنامه حتی در مواجهه با خطاهای شبکه یا دادههای نامعتبر متوقف نشود و پیام مناسبی به کاربر نمایش داده شود.
افزودن قابلیتهای اضافی و بهبود تجربه کاربری
پس از دریافت دادهها، میتوان قابلیتهای پیشرفتهتری نیز اضافه کرد، مانند نمایش پیشبینی چند روز آینده، انتخاب واحد دما بین سانتیگراد و فارنهایت، یا حتی ذخیره آخرین وضعیت دریافت شده در فایل محلی برای استفاده آفلاین. همچنین میتوان از حلقهها و توابع برای بهبود ساختار برنامه استفاده کرد تا برنامه قابل نگهداری و توسعه باشد. این تمرین باعث میشود تسلط شما بر APIها، JSON، مدیریت خطا و طراحی برنامههای کاربردی در پایتون افزایش یابد و تجربه عملی ارزشمندی به دست آورید.
جمعبندی پروژه
در این پروژه کوچک یاد گرفتیم چگونه دادههای وضعیت آب و هوا را از یک API دریافت کنیم، آنها را به JSON تبدیل و پردازش کنیم، خروجی قابل فهم برای کاربر نمایش دهیم و خطاهای احتمالی را مدیریت کنیم. این پروژه ترکیبی از مفاهیم قبلی مانند requests, JSON, try-except, و فرمتدهی خروجی است و به عنوان یک تمرین عملی، پایهای مناسب برای پروژههای پیچیدهتر در آینده فراهم میکند. با تکرار این فرآیند و افزودن ویژگیهای بیشتر، میتوانید برنامهای حرفهای بسازید که توانایی پردازش دادههای واقعی و ارائه خروجی کاربرپسند را داشته باشد و تجربه واقعی کار با APIها را برایتان فراهم کند.
