Table of Contents
ایدهٔ «برنامه تعاملی» یعنی چه؟
در فصلهای قبل با input()، print() و کمی قالببندی خروجی آشنا شدیم.
در این بخش تمرکز روی این است که همهٔ اینها را کنار هم قرار دهیم تا برنامهای بسازیم که:
- از کاربر سؤال بپرسد
- بر اساس پاسخ او تصمیم بگیرد چه کند
- چند مرحله پشت سر هم با کاربر در ارتباط باشد
به این نوع برنامهها میگوییم برنامهٔ تعاملی.
ویژگیهای یک برنامهٔ تعاملی ساده
برای شروع، چند ویژگی مهم را در نظر میگیریم:
- خوشآمدگویی و توضیح کوتاه برنامه
- گرفتن ورودی (مثلاً نام، عدد، انتخاب منو و …)
- پردازش ورودی (محاسبه، تبدیل نوع، تصمیمگیری و …)
- نمایش خروجی قابلفهم برای کاربر
- گاهی تکرار (مثلاً دوباره پرسیدن تا وقتی کاربر بگوید «خروج»)
هر قسمت معمولاً با print() و input() انجام میشود، و در فصلهای بعد شرط (if) و حلقه (while / for) را هم اضافه خواهیم کرد تا تعاملیتر شود.
ساختار کلی یک برنامهٔ تعاملی
یک الگوی بسیار ساده:
print("سلام! به برنامهٔ ما خوش آمدید.")
name = input("لطفاً نام خود را وارد کنید: ")
print("سلام", name + "!")
print("برنامهٔ ما کارش این است که دو عدد را از شما بگیرد و جمع آنها را حساب کند.")
a = input("عدد اول را وارد کنید: ")
b = input("عدد دوم را وارد کنید: ")
a = float(a)
b = float(b)
jam = a + b
print("نتیجه جمع", a, "و", b, "برابر است با:", jam)نکات مهم این مثال:
- چند مرحله سؤال پرسیده میشود.
- توضیح داده میشود برنامه چه میکند.
- ورودیها به
floatتبدیل شدهاند تا بتوانیم جمع عددی انجام دهیم. - خروجی طوری چاپ شده که قابلفهم و مرتب باشد.
طراحی «گفتوگو» با کاربر
برنامهٔ تعاملی در واقع یک گفتوگوست؛ مثل چت بسیار ساده:
- سؤال: با
print()وinput() - پاسخ کاربر: رشتهای که از
input()دریافت میکنید - پاسخ برنامه: محاسبه +
print()
مثال: محاسبهٔ سن
print("سلام! من سن شما را حساب میکنم.")
sal_tavalod = input("در چه سالی به دنیا آمدهاید؟ (مثلاً 1380) ")
sal_tavalod = int(sal_tavalod)
sal_feli = 1403 # فرض میکنیم سال جاری 1403 است
sen = sal_feli - sal_tavalod
print("سن تقریبی شما:", sen, "سال است.")اینجا:
- برنامه خودش یک عدد ثابت (
1403) دارد. - بر اساس ورودی سن را حساب میکند.
- یک جملهٔ کامل و قابلفهم چاپ میکند.
برخورد با ورودی «متن» و گرفتن تصمیم ساده
حتی بدون یاد گرفتن کامل شرطها، میتوانیم کمی از ایدهٔ تصمیمگیری استفاده کنیم تا برنامه طبیعیتر شود. توضیح عمیق if در فصل بعد است، اما اینجا فقط استفادهٔ سطحی برای طبیعی شدن تعامل را میبینیم.
مثال: خوشآمدگویی بر اساس نام
name = input("اسم شما چیست؟ ")
print("سلام", name + "!")
javab = input("حالتان چطور است؟ (خوب / بد) ")
if javab == "خوب":
print("عالیه! خوشحال شدم.")
elif javab == "بد":
print("متأسفم، امیدوارم حالتان بهتر شود.")
else:
print("متوجه نشدم، ولی امیدوارم روز خوبی داشته باشید!")
نکتهٔ مهم برای برنامههای تعاملی:
سؤالها باید واضح باشند و پاسخهای ممکن را برای کاربر روشن کنید (مثل (خوب / بد)).
منوی ساده متنی
یکی از الگوهای مهم در برنامههای تعاملی، ساختن منویی از گزینهها است تا کاربر از بین آنها انتخاب کند.
مثال: منوی انتخاب عملیات
print("ماشینحساب خیلی ساده")
print("لطفاً یک گزینه را انتخاب کنید:")
print("1 - جمع دو عدد")
print("2 - تفریق دو عدد")
entekhab = input("شمارهٔ گزینه را وارد کنید (1 یا 2): ")
if entekhab == "1":
a = float(input("عدد اول: "))
b = float(input("عدد دوم: "))
print("نتیجه جمع:", a + b)
elif entekhab == "2":
a = float(input("عدد اول: "))
b = float(input("عدد دوم: "))
print("نتیجه تفریق:", a - b)
else:
print("گزینهٔ نامعتبر.")این ساختار در خیلی از برنامههای تعاملی تکرار میشود:
- چاپ منو
- گرفتن انتخاب
- انجام کار مناسب با آن انتخاب
- چاپ نتیجه
در فصل شرطها و حلقهها، این منو را قویتر و قابلتکرار خواهیم کرد.
تجربهٔ کاربری (UX) در برنامههای متنی
حتی در یک برنامهٔ ساده خط فرمانی، میتوان تجربهٔ کاربر را بهتر کرد:
- پیامهای واضح:
به جایعدد را وارد کنید:بنویسیدلطفاً قد خود را بر حسب سانتیمتر وارد کنید: - نمونهٔ ورودی در پرانتز:
سال تولد (مثلاً 1380): - فاصلهها و خط خالی برای خوانایی:
print("سلام!")
print()
print("من یک برنامهٔ ساده برای محاسبهٔ شاخص توده بدنی (BMI) هستم.")
print()ترکیب ورودی و خروجی برای ساخت «سناریو»
بیایید یک برنامهٔ تعاملی کمی داستانی بسازیم.
این فقط از input(), print(), تبدیل عدد و کمی if استفاده میکند.
مثال: برنامهٔ «سلامت روزانه» (نسخهٔ ساده)
print("سلام! به برنامهٔ «راهنمای سلامت روزانه» خوش آمدید.")
print("من چند سؤال از شما میپرسم و در پایان یک پیشنهاد ساده میدهم.")
print()
name = input("اول از همه، نام شما چیست؟ ")
print("خوشبختم", name + "!")
print()
sen = int(input("چند سال دارید؟ "))
saat_khab = float(input("معمولاً در شبانهروز چند ساعت میخوابید؟ "))
print()
print("در حال بررسی پاسخهای شما هستم...")
print()
# این بخشها در فصل شرطها کاملتر توضیح داده میشود
if saat_khab < 6:
print("به نظر میرسد کم میخوابید. شاید بد نباشد کمی زودتر بخوابید.")
elif saat_khab > 9:
print("شما خیلی زیاد میخوابید! اگر مشکلی ندارید، اشکالی نیست،")
print("اما معمولاً 7 تا 9 ساعت خواب برای بزرگسالان پیشنهاد میشود.")
else:
print("میزان خواب شما در محدودهٔ معمول به نظر میرسد.")
print()
print("ممنون", name, "که از این برنامه استفاده کردید!")نکتهها:
- از چند بخش تشکیل شده (خوشآمدگویی، سؤالها، نتیجه).
- با چاپ خط خالی (
print()) متن را خواناتر کردهایم. - پیام پایانی دارد.
چند الگوی مفید در برنامههای تعاملی
۱. تأیید گرفتن از کاربر
گاهی خوب است قبل از انجام کار، از کاربر تأیید بگیریم:
esm_file = input("نام فایلی که میخواهید حذف شود را وارد کنید: ")
print("شما میخواهید فایل", esm_file, "را حذف کنید.")
taeed = input("مطمئن هستید؟ (y/n): ")
if taeed == "y":
print("در این مثال فقط وانمود میکنیم که فایل حذف شد.")
else:
print("عملیات لغو شد.")(کار واقعی با فایلها در فصل مربوط به فایلها خواهد آمد.)
۲. پرسیدن چند اطلاعات پشت سر هم
print("فرم ثبتنام بسیار ساده")
first_name = input("نام: ")
last_name = input("نام خانوادگی: ")
age = input("سن: ")
city = input("شهر محل سکونت: ")
print()
print("خلاصه اطلاعات شما:")
print("-----------------")
print("نام:", first_name)
print("نام خانوادگی:", last_name)
print("سن:", age)
print("شهر:", city)اینجا تمرکز روی اِرائهٔ خلاصهٔ اطلاعات برای کاربر است.
خطاهای رایج در برنامههای تعاملی (در این سطح)
در این مرحله (بدون ورود به جزئیات خطاها و اشکالزدایی) چند اشتباه ساده را میتوانیم شناسایی کنیم:
- فراموش کردن تبدیل نوع برای محاسبهٔ عددی
a = input("عدد اول: ")
b = input("عدد دوم: ")
print(a + b) # اینجا رشتهها را به هم میچسباند، نه جمع عددی!در عوض:
a = float(input("عدد اول: "))
b = float(input("عدد دوم: "))
print(a + b)- نبودِ توضیح کافی برای کاربر
پیامهای مبهم مثل:
ورودی را وارد کنید:
به جایلطفاً دمای هوا را بر حسب درجهٔ سانتیگراد وارد کنید:
- عدم نمایش نتیجه بهصورت واضح
فقط چاپ کردن یک عدد خام:
print(javab)بهتر است:
print("نتیجه محاسبه شما:", javab)تمرینهایی برای نوشتن برنامهٔ تعاملی
برای تمرین، میتوانید این ایدهها را پیادهسازی کنید:
- برنامهٔ معرفی شخصی
- نام، نام خانوادگی، سن و شهر را از کاربر بگیرید.
- در پایان یک جملهٔ کامل مثل این چاپ کنید:
سلام علی رضایی 25 ساله از تهران! خوش آمدی. - برنامهٔ محاسبهٔ مساحت مستطیل
- طول و عرض مستطیل را بپرسید.
- آنها را به عدد (مثلاً
float) تبدیل کنید. - مساحت را حساب کنید و با یک جملهٔ خوانا نمایش دهید.
- برنامهٔ انتخاب علاقهمندی
- از کاربر بپرسید بیشتر به کدام علاقه دارد:
1- فیلم 2- موسیقی 3- کتاب - بر اساس انتخاب، یک پیام مناسب چاپ کنید.
- برنامهٔ «خلاصهٔ روز»
- چند سؤال بپرسید: امروز چند ساعت کار/درس، چند ساعت تفریح، حال کلیات؟
- در پایان یک خلاصهٔ متنی دربارهٔ روز او نمایش دهید.
در فصلهای شرطها و حلقهها، همین برنامههای تعاملی را هوشمندتر و تکرارشونده میکنیم. فعلاً کافی است بتوانید با ترکیب input(), print() و تبدیل نوع، چند مرحله گفتوگوی ساده با کاربر بسازید.