گفتوگو با لاکپشت: روش دریافت ورودی متنی
ساختار و شیوهٔ استفاده از دستور textinput
دستور textinput در محیط لاکپشت، مانند یک پنجرهٔ کوچک است که از کاربر میخواهد چیزی بنویسد. این دستور معمولاً به همراه یک متغیر به کار میرود تا پاسخ کاربر در آن ذخیره شود. ساختار کلی آن به این صورت است:
نام_متغیر = textinput("پیام")
در اینجا، «پیام» همان سؤالی است که کاربر میبیند؛ مثلاً «نام خود را وارد کن». وقتی برنامه به این خط میرسد، پنجرهای باز میشود و کاربر میتواند پاسخ خود را تایپ کند. پس از کلیک روی دکمهٔ تأیید، آنچه نوشته شده در متغیر سمت چپ علامت مساوی ذخیره میشود. سپس میتوانیم از آن متغیر در جایهای دیگر برنامه استفاده کنیم؛ مثلاً آن را با دستور print نشان دهیم یا در محاسبات به کار ببریم.
فرض کن میخواهی برنامهای بنویسی که از کاربر بپرسد چند سال دارد و سپس پیامی متناسب با سنش نشان دهد. کد آن میتواند چیزی شبیه این باشد:
سن = textinput("چند سال داری؟")
print("تو " + سن + " سال داری.")
دقت کن که پاسخ textinput همیشه به صورت نوشته (متن) ذخیره میشود، حتی اگر کاربر عدد وارد کند. پس اگر بخواهیم با آن عدد، محاسبهٔ ریاضی انجام دهیم، باید آن را به عدد تبدیل کنیم که در بخش بعدی به آن میپردازیم.
کاربردها و نکات مهم در استفاده از ورودی متنی
یکی از جذابیتهای textinput این است که برنامه را تعاملی (گفتوگوگونه) میکند. کاربر حس میکند با برنامه در حال گفتوگو است. از این دستور در ساخت بازیهای ساده، برنامههای پرسشنامه، ماشینحسابهای شخصیسازیشده و حتی طراحیهای گرافیکی استفاده میشود. مثلاً میتوانی از کاربر بپرسی چند ضلع بکشد و سپس لاکپشت را به کشیدن آن شکل وادار کنی.
اما باید به یک نکتهٔ مهم توجه کنی: همانطور که گفتیم، خروجی textinput از نوع نوشته (رشتهٔ متنی) است. اگر بخواهی کاربر عدد وارد کند و با آن جمع یا تفریق انجام دهی، باید آن را با دستور عددکن (int) به عدد تبدیل کنی. برای نمونه:
تعداد = textinput("چند تا مربع بکشم؟")
تعداد_عدد = int(تعداد)
for i in range(تعداد_عدد):
# کد کشیدن مربع
همچنین میتوانی از textinput برای دریافت چندین اطلاعات پشت سر هم استفاده کنی؛ مثلاً نام و نامخانوادگی و سن را جداگانه بپرسی و سپس یک معرفی کامل از آنها بسازی.
| نوع ورودی | خروجی textinput | تبدیل مورد نیاز | کاربرد |
|---|---|---|---|
| نوشته (متن) | همان نوشته | نیازی نیست | نام، پیام، آدرس |
| عدد | عدد به صورت نوشته | تبدیل با int() | محاسبات، تعداد حلقه |
پرسشهای چالشی و اشتباهات رایج
پرسش ۱: چرا بعد از textinput نمیتوانم پاسخ را با عدد دیگری جمع کنم؟
چون textinput همیشه خروجی را به صورت نوشته (متن) برمیگرداند، حتی اگر کاربر عدد تایپ کند. برای جمع کردن، باید ابتدا آن را با دستور int() به عدد تبدیل کنی. اگر این کار را نکنی، برنامه با خطا مواجه میشود.
پرسش ۲: آیا میتوانم از textinput برای دریافت پاسخ بله یا خیر استفاده کنم؟
بله، اما پاسخ باز هم به صورت نوشته ذخیره میشود. برای بررسی آن باید از شرط (if) استفاده کنی و پاسخ را با عبارت «بله» یا «خیر» مقایسه کنی. مثلاً اگر پاسخ برابر «بله» بود، کاری انجام بده.
پرسش ۳: اگر کاربر چیزی ننویسد و تأیید کند، چه میشود؟
در این حالت، متغیر شما یک نوشتهٔ خالی (تهی) خواهد داشت. برای جلوگیری از بروز مشکل، میتوانی پس از دریافت ورودی، بررسی کنی که آیا متغیر خالی است یا نه و اگر خالی بود، پیام خطا نشان دهی یا دوباره سؤال بپرسی.
پرسش ۴: آیا میتوان در یک برنامه چند بار از textinput استفاده کرد؟
بله، به تعداد نامحدود. هر بار که به خط حاوی textinput میرسی، پنجرهٔ جدیدی باز میشود و از کاربر سؤال میکند. میتوانی اطلاعات مختلف را یکی پس از دیگری دریافت کنی و در متغیرهای جداگانه ذخیره کنی.
آنچه آموختیم
دستور textinput به ما امکان میدهد از کاربر سؤال بپرسیم و پاسخ او را در برنامه ذخیره کنیم. با این کار، برنامههای ما تعاملی میشوند و کاربر میتواند در جریان اجرا، اطلاعاتی را وارد کند. همیشه به یاد داشته باش که خروجی این دستور از نوع نوشته است و برای محاسبات باید آن را به عدد تبدیل کنی. همچنین با کمی خلاقیت، میتوانی از این دستور در بازیها، پرسشنامهها و برنامههای نقاشی با لاکپشت استفاده کنی و تجربهٔ جذابی برای کاربر بسازی.