گرفتن ورودی در پایتون، یکی از جنبههای مهم مهارتهای برنامه نویسی است. زیرا این فرایند به کاربران اجازه میدهد که از طریق تعامل با برنامه، دادهها یا دستور العملهای مورد نیاز را ارسال یا فراخوانی کنند. بنابراین، در زمان برنامهنویسی، مدیریت صحیح گرفتن داده ورودی از کاربر، کلید اصلی برای ساخت برنامههای کاربرپسند است. روش دریافت دادهها از کاربر، به میزان قابل توجهی بر تجربه کاربری، ظاهر سیستم و موفقیت کلی برنامه تاثیرگذار است. روشها و تکنیکهای مختلفی برای گرفتن داده ورودی در پایتون از کاربران وجود دارد. پس تا انتهای این مطلب تلاش میکنیم، به درک بهتری از انواع این روشهای پایتونی برای گرفتن داده ورودی از کاربران برسیم.
پایتون برای مدیریت موثر دادههای ورودی، طیف گستردهای از ابزار گوناگون را فراهم کرده است. این ابزارها از تابع درونی input()
گرفته تا ماژولهای پیشرفتهتری مانند «Argparse» و عبارات منظم را شامل میشود. در این مطلب از مجله فرادرس بر روی اصول پایه گرفتن داده ورودی از کاربر تمرکز کردهایم. در شروع مطلب حاضر، به انواع کاربرد تابع input()
پرداخته و بهترین روش استفاده از این تابع را به صورت بهینه بررسی میکنیم.
ساده ترین روش گرفتن ورودی در پایتون چیست؟
سادهترین روش گرفتن داده ورودی در پایتون استفاده از تابع input()
است. تابع input()
یکی از توابع درونی پایتون است که برنامه نویسان برای گرفتن داده استفاده میکنند. این تابع با کمک پیامی که با کاربران نمایش میدهد برای ترغیب کردن آنها به وارد کردن داده کمک میکند. سپس داده گرفته شده را با نوع داده استرینگ در متغیر مشخص شدهای ذخیره کرده یا به صورت مستقیم به تابع تعیین شده ارسال میکند. این یکی از روشهای ساده و سرراست برای مدیریت دادههای ورودی توسط کاربران است. به همین دلیل هم به یکی از انتخابهای محبوب برنامهنویسهای پایتون تبدیل شده است.
چگونه از تابع input استفاده کنیم؟
تابع input()
خطی از متن را که توسط کاربر وارد شده میخواند. سپس خط خوانده شده را به صورت شیئی از نوع داده رشته در خروجی برمیگرداند. این تابع دارای آرگومان اختیاری با نام فرضی Prompt
است. با کمک این آرگومان از کاربر درخواست وارد کردن داده میکند. در واقع محتوی این آرگومان رشتهای است که قبل از انتظار برای دریافت ورودی از کاربر، به وی نمایش داده میشود.
سینتکس و استفاده از تابع int
تابع int()
به عنوان ورودی، میتواند پارامتر اختیاری دریافت کند، که با کمک آن پیغامی به کاربر نمایش داده میشود. در بخش قبل نام این پارامتر را به صورت دلخواه Prompt
تعیین کردیم. معمولا با استفاده از این پیغام از کاربر درخواست میشود که داده خاصی را با نوع داده مشخص وارد کند. در نهایت هم،در خروجی، داده وارد شده توسط کاربر را به شکل رشته برمیگرداند.
در کادر زیر شکل پایه سینتکس تابع input()
را با کمک مثال سادهای نمایش دادهایم.
1Prompt = "Enter your name: "
2name = input(Prompt) #Syntax
3print("Hello, " + name + "!")
توجه کنید که پارامتر Prompt
در مثال بالا حتما باید از جنس رشته باشد. برای مثال، میتوان جمله “Enter your name: “
را به صورت مستقیم به تابع ارسال کرد.
در زمان استفاده از تابع input()
باید به یاد داشت که به صورت پیشفرض، پایتون، هر نوع دادهی وارد شده توسط کاربر را به عنوان شیء رشتهای در نظر میگیرد. یعنی اینکه، هر داده وارد شده به سیستم را خودمان باید با استفاده از تابع تبدیل کننده مناسب آن داده به نوع داده مطلوب و مورد نظر تبدیل کنیم. به عنوان مثال، میتوان از توابع تبدیل کننده نوع int()
و float()
نام برد.
در کادر زیر، مثالی از روش استفاده از تابع input()
در برنامه پایتونی نمایش داده شده است.
1name = input("Enter your name")
2print("Hello, " + name + "!")
در مثال بالا، تابع input()
از کاربر میخواهد که نام خود را وارد کند. سپس داده دریافت شده را با نوع داده رشته در پایتون داخل متغیری به نام name
ذخیره میکند. در آخر کار، برنامه از همان متغیر name
برای نمایش پیام خوشامدگویی به صورت شخصسازی شده استفاده میکند.
وقتی که تابع input()
را فراخوانی میکنیم، پایتون منتظر میماند که کاربر خطی از دادههای متنی را وارد کند و با زدن دکمه Enter به خط بعد برود. در این لحظه تابع پایتون input()
دادههای وارد شده در خط اول توسط کاربر را خوانده و به صورت شیء از نوع داده رشته به خارج از تابع در برنامه نوشته شده برمیگرداند. اگر آرگومان مربوط به درخواست وارد کردن داده را برای تابع input()
فراهم نکنیم، فقط به سادگی بدون نمایش هیچ پیغامی منتظر میماند تا کاربر دادهای را وارد کند و سپس دکمه «Enter» را بزند.
بهترین روش های یادگیری پایتون با فرادرس
زبان برنامه نویسی پایتون جزو زبانهای سطح بالا و تقریبا همه کاره حال حاضر در دنیای برنامهنویسی است. به همین جهت به یکی از محبوبترین زبانهای برنامهنویسی جهان هم تبدیل شده است. امروزه تقریبا برای یادگیری هر دانشی از قبیل برنامهنویسی با زبان پایتون، میتوان به انواع منابع دسترسی داشت. از کلاسهای آنلاین و حضوری گرفته تا پادکست، کتاب و فیلمهای آموزشی. فیلمهای آموزشی نسبت به سایر منابع، مخصوصا در بحث برنامهنویسی و سایر علوم کامیپوتری از امتیازات ویژهای برخوردار هستند.
فرادرس با تولید کردن مطالب و فیلمهای مختلف به یکی از بهترین تولیدکنندگان محتوای آموزشی فارسی تبدیل شده است. زبان برنامهنویسی پایتون هم یکی از گزینههای مورد نظر فرادرس برای تولید محتواهایی ویدئویی بوده است. در فرادرس با تاکید بر کیفیت بالای محتواهای آموزشی و همه شمول بودن این محتواها فیلمهای بسیار خوبی مخصوصا در زمینه پایتون تهیه شده. یکی از مجموعههای آموزشی فرادرس به عنوان گزینه بسیار خوبی برای شروع این زبان برنامهنویسی، مجموعه آموزش پایتون برای نوجوانان است. که با تمرکز برای یادگیری مطالب سرگرم کننده و ابتدایی برای نوجوانان و افراد تازه وارد تهیه شده.
یکی دیگر از بهترین گزینهها برای شروع به یادگیری زبان برنامهنویسی پایتون مشاهده فیلم رایگان آموزش برنامه نویسی سریع و آسان پایتون در ۱۴۰ دقیقه از فرادرس است. اما مواردی که در ادامه معرفی کردهایم مربوط به کسانی است که دوره آموزش اولیه پایتون را گذرانده و در پی ارتقای سطح مهارتهای خود هستند.
مدیریت نوع های داده مختلف با استفاده از تابع input
همینطور که بیان کردیم، به صورت پیشفرض تابع Input در پایتون داده ورودی کاربر را به صورت شیئی از نوع داده رشته برمیگرداند. اما در صورت نیاز به کارکردن با سایر انواع داده، میتوانیم از توابع مربوط به تبدیل نوع مانند int()
و float()
و bool()
استفاده کنیم. با کمک این نوع از توابع میتوانیم داده وارد شده را به نوع داده مطلوب نظر خود تبدیل کنیم.
1age = int(input("How old are you? "))
2if age >= 18:
3print("You're old enough to enter!")
4else:
5print("Sorry, you're not old enough to enter yet.")
در مثال بالا، تابع input()
از کاربر، درخواست میکند که سن خود را وارد کند. سپس داده وارد شده توسط کاربر با نوع داده رشته ذخیره میشود. برنامهی بالا، برای تبدیل رشته دریافت شده از تابع input()
به عدد صحیح از تابع int()
استفاده کرده است. در نهایت هم بررسی میکند که آیا کاربر به حداقل سن مورد نیاز برای ورود به سایت رسیده است یا نه.
بر طرف کردن خطاهای مرتبط با گرفتن داده ورودی در پایتون
با وجود بهترین تلاشهای برنامهنویسان، کاربران گاهی اوقات دادههای غیر صحیح یا غیر منتظرهای را وارد میکنند. در چنین مواردی، باید برای جلوگیری از خرابشدن برنامه یا تولید دادههای خروجی غلط، این نوع از خطاها به بهترین شکل ممکن مدیریت شوند.
استفاده از بلوک های Try-Except
یکی از رایجترین روشهای موجود برای بر طرف کردن خطاهای مربوط به گرفتن ورودی در پایتون، استفاده از بلوکهای Try-Except است. با کمک بلوک Try-Except
میتوان بلوک مشخصی از کدها را اجرا و هر نوع خطای استثنایی که ظاهر شدهای را مدیریت کرد. با این روش میتوانیم انواع خطاهای ممکن در زمان وارد کردن داده را به بهترین شکل ممکن مدیریت کنیم.
در کادر زیر، برای مدیریت خطای مربوط به دریافت داده از کاربر، مثالی را درباره استفاده از بلوک Try-Except
پیادهسازی کردهایم.
1try:
2age = int(input("Enter your age: "))
3except ValueError:
4print("Invalid input. Please enter a valid integer.")
در مثال بالا، تلاش میکنیم، با استفاده از تابع int()
داده ورودی کاربر را به نوع داده عدد صحیح تبدیل کنیم. اگرچه، اگر کاربر مقداری غیر عددی وارد کند باعث برخواستن خطای ValueError
میشود. در این مثال با استفاده از بلوک Try-Except
و چاپ کردن پیام خطای مناسبی برای کمک به کاربر، خطای ValueError
را مدیریت و از خرابی برنامه جلوگیری کردهایم.
اعتبارسنجی داده ورودی در پایتون
روش دیگری که برای مدیریت خطاها در زمان گرفتن ورودی در پایتون وجود دارد، اعتبارسنجی دادهها قبل از پردازش آنها است. این مطلب میتواند شامل بررسی نوع داده خاص، محدوده مقدارهای مورد نیاز یا سایر شرایطی شود که برنامه نوشته شده به آنها نیاز دارد.
در کادر زیر، مثالی را درباره اعتبارسنجی دادهها کدنویسی کردهایم. در این مثال عضویت داده ورودی در محدوده خاصی از مقادیر را بررسی میکنیم.
1age = -1
2while age < 0 or age > 120:
3try:
4age = int(input("Enter your age (0-120): "))
5if age < 0 or age > 120:
6print("Invalid age. Please enter a value between 0 and 120.")
7except ValueError:
8print("Invalid input. Please enter a valid integer.")
در مثال بالا، از حلقه while در پایتون برای درخواست از کاربر استفاده میکنیم. با کمک این حلقه تا وقتی که مقدار معتبری بین 0
تا 120
توسط کاربر وارد نشده، برنامه به طور داعم درخواست خود را مطرح میکند. در کدهای بالا از تکنیک اعتبارسنجی داده ورودی استفاده کردیم. با کمک این تکنیک مطمئن میشویم که مقدار داده ورودی توسط کاربر با نیازمندیهای برنامه نوشته شده همخوانی دارد. در نهایت هم هر خطایی را که ظاهر شود با استفاده از بلوک Try-Except
مدیریت میکنیم.
تابع input()
یکی از توابع ساده اما بسیار مهم و مفید در پایتون است. استفاده از این تابع، دارای ریزهکاریهای زیادی است که در عین ظرافت و سادهگی میتوانند تاثیر بسیار زیادی بر عملکرد کد بگذارند. برای آشنایی کامل با این تابع و جزئیات مربوط به آن پیشنهاد میکنیم که مطلب input در پایتون چیست؟ همراه با توضیح تابع و دستور با مثال و کد از مجله فرادرس را مطالعه کنید.
ارائه بازخورد مناسب به کاربر
بعد از اینکه خطاهای مربوط به گرفتن ورودی در پایتون را مدیریت کردیم، باید بازخورد شفاف و مفیدی را به کاربر ارائه دهیم. این فرایند میتواند شامل ارائه پیامهای خطای مناسب، درخواست برای دریافت دادههای ورودی بیشتر یا سایر اشکال راهنمایی برای کمک به اصلاح خطاهای ورودی توسط کاربر شود.
در کد زیر، مثالی را پیادهسازی کردهایم. این مثال مربوط به نحوه ارائه بازخورد به کاربر در زمان مدیریت خطاهای مربوط به دادههای ورودی است.
1try:
2age = int(input("Enter your age: "))
3if age < 0 or age > 120:
4print("Invalid age. Please enter a value between 0 and 120.")
5else:
6print("Your age is:", age)
7except ValueError:
8print("Invalid input. Please enter a valid integer.")
در مثال بالا، بسته به اعتبار دادههایی که توسط کاربر به برنامه ارسال میشود، بازخورد متناسب را تهیه کرده و ارائه میدهیم. اگر کاربر سنی را خارج از محدودهی مشخص شده وارد کند، پیغام خطای مناسبی را آماده کردهایم. سپس از کاربر درخواست میکنیم تا عدد معتبری را به عنوان سن وارد کند. اما در صورت وارد کردن مقدار معتبری توسط کاربر، سن معتبر کاربر را بر روی کنسول پایتون چاپ خواهیم کرد.
میبینید که در صورتی که کاربر داده غیر عددی وارد کند که باعث برخواستن خطای ValueError
شود، با کمک بلوک Try-Except
این خطا را هم مدیریت کرده و بازخورد متناسب را به کاربر برمیگردانیم.
بهترین رویکردهای استفاده از تابع input برای گرفتن ورودی در پایتون
استفاده از تابع input()
در برنامهنویسی پایتون یکی از سادهترین، مهمترین و رایجترین بخشهای اکثر برنامههای پایتون است که با رویکرد تعاملی نوشته میشوند. برای تسلط به این بخش پیشنهاد میکنیم که فیلم آموزش برنامه نویسی پایتون Python دوره مقدماتی از فرادرس را تماشا کنید. برای راحتی کار لینک مربوط به این دوره را در ادامه قرار دادهایم.
در این بخش از مطلب، چند مسئله مهم را برای بخاطر سپردن در زمان استفاده از تابع input()
بیان میکنیم.
- همیشه آرگومان مربوط به «Prompt» را برای ارائه درخواست به صورت واضح و شفاف در تابع input()
قرار دهید.
- در صورت نیاز به تبدیل رشتههای ورودی به سایر انواع داده از توابع تبدیلی استفاده کنیم.
- با استفاده از عبارات شرطی، دادههای وارد شده توسط کاربر را ارزیابی میکنیم. این کار تضمین میکند که دادههای وارد شده معتبر و همخوان با نیازمندیهای برنامه باشند.
- در زمان پردازش دادههای وارد شده توسط کاربر ممکن است، خطاهایی رخ دهند. باید از بلوکهای Try-Except
برای مدیریت خطاهایی احتمالی استفاده کنیم.
- از آنجا که دادههای ورودی کاربر به صورت متن ساده قابل نمایشاند، از استفاده تابع input()
برای گرفتن اطلاعات حساس مانند رمز عبور اجتناب کنیم.
تا به اینجای مطلب، مطالب مهم و پایه مربوط به تابع input()
در پایتون را بررسی کردیم. انواع مشکلات ممکن موجود در استفاده از این تابع را توضیح داده و روش مدیریت این مشکلات را هم در برنامه خود بیان کردیم. در ادامه به بررسی روشهای بیشتر و حرفهایتری برای گرفتن ورودی در پایتون پرداختهایم.
روش های حرفه ای گرفتن ورودی در پایتون
برای گرفتن ورودی در پایتون، تکنیکهای مختلفی بهجز روش مستقیم وارد کردن داده از طریق کیبرد توسط کاربر نیز وجود دارد. در این بخش از مطلب سه روش زیر را با کمک مثالهای کدنویسی شده نمایش دادهایم.
- خواندن داده ورودی از خط فرمان
- گرفتن ورودی در پایتون از طریق فایل
- گرفتن ورودی در پایتون از طریق GUI
در ادامه هر کدام از روشهای بالا را با کمک مثال سادهای توضیح دادهایم.
خواندن داده ورودی از خط فرمان
با استفاده از ماژول sys میتوانیم داده ورودی را از طریق آرگومانهای موجود در خط فرمان بخوانیم. در کد زیر مثالی را درباره استفاده از این تکنیک پیادهسازی کردهایم.
1import sys
2
3name = sys.argv[1]
4print("Hello, " + name + "!")
کد sys.argv[1]
دقیقا به کلمهای اشاره میکند که بعد از نام اسکریپت در زمان اجرای فایل توسط خط فرمان قرار میگیرد.
گرفتن ورودی در پایتون از طریق فایل
با استفاده از توابعی مانند open()
و read()
و readline()
در پایتون، میتوانیم دادههای ورودی را از طریق فایلها استخراج کنیم.
1file = open("data.txt", "r")
2data = file.read()
3print(data)
4file.close()
اگر در جایگاه data.txt
، فقط نام فایل را قرار دهیم، پایتون مسیر محل نصب خود در سیستم را میگردد، در غیر این صورت باید آدرس کامل فایل را مشخص کنیم. آرگومان “r”
در تابع open()
به معنای بازکردن فایل با هدف خواندن دادههای درون آن است.
گرفتن ورودی در پایتون از طریق GUI
در این روش میخواهیم که دادهها را با واسطه رابط کاربری گرافیکی از کاربر دریافت کنیم. برای ایجاد رابط کاربری تعاملی به این منظور، باید از کتابخانه های گرافیکی پایتون استفاده کنیم. یکی از کتابخانههای گرافیکی پایتون که در مثال زیر هم مورد استفاده قراردادهایم کتابخانه درونی Tkinter است.
1from tkinter import *
2
3def submit():
4 name = entry.get()
5 label.config(text="Hello, " + name + "!")
6
7root = Tk()
8entry = Entry(root)
9entry.pack()
10
11button = Button(root, text="Submit", command=submit)
12button.pack()
13
14label = Label(root)
15label.pack()
16
17root.mainloop()
یادگیری حرفهای پایتون با فرادرس
از آنجا که زبان برنامهنویسی پایتون دارای توانایی انعطافپذیری بالا و چندکاربری است، در پروژههای مختلف استفاده میشود. کسانی که زمان و تمرکز خود را به یادگیری مهارت کار با پایتون صرف کردهاند، تقریبا میتوانند در انواع مختلفی از رشتههای موجود مانند موارد زیر مشغول به کار شوند.
البته باید توجه کرد که پایتون در عین حال که فرایند یادگیری سادهای دارد، در ادامه برای حرفهای شدن شامل تکنیکهای بسیار خاصی نیز میشود. یادگیری این تکنیکها توسط برنامهنویسان در افزایش توانمندی و مهارتشان تاثیر بسیار چشمگیری میگذارد.
از دیدگاه فرادرس، فیلمهای آموزشی تولید شده، نه تنها باید برای دانشآموزان و دانشجویان به منظور گزینههای کمک درسی مفید واقع شوند، بلکه حتی افراد کارجو یا برنامه نویسان حرفهای نیز باید بتوانند از محتوای این فیلمها استفاده مفید ببرند. به همین منظور در همه رشتهها از قبیل آموزش برنامهنویسی و به طور خاص زبان پایتون، هدف را بر تولید فیلمهای آموزشی از پایه تا سطوح بسیار پیشرفته در رشتههای تخصصی متنوع گذاشته است.
در ادامه چند مورد از ویدئوهای آموزشی را معرفی کردهایم. این ویدئوها تقریبا پلی بین سطوح مبتدی و حرفهای پایتون با سطوح تخصصی مربوط به کار بر روی پروژههای واقعی هستند. شاید یادگیری آنها لازم نباشد اما برنامه نویسانی که دارای مهارتهای آموزش داده شده در فیلمهای زیر هستند، به وضوح نسبت به سایر برنامهنویسان از توانایی بیشتر و برجستگی خاصی در پیادهسازی پروژهها برخودار هستند.
ابزار حرفه ای گرفتن ورودی در پایتون
برای گرفتن اطلاعات ورودی در پایتون، ابزارهای مختلفی تعبیه شدهاند. هر دادهای را – مانند کلمه عبور – نمیتوان با استفاده از تابع input()
از کاربر گرفت. به همین ترتیب، برای اعتبارسنجی بهتر دادهها لازم است که به کار با RegEx-ها آشنایی داشته باشیم.
استفاده از کتابخانه ها برای گرفتن ورودی به روش پیشرفته
برای گرفتن کلمه عبور به شکل امن در پایتون از کتابخانههایی مانند getpass
استفاده میکنیم. با استفاده از این کتابخانه کاراکترهای وارد شده توسط کاربر نمایش داده نمیشوند.
1import getpass
2
3password = getpass.getpass("Enter your password: ")
4print("Password entered.")
پیاده سازی اعتبارسنجی داده های ورودی با استفاده از رجکس ها
استفاده کردن از تکنیکهایی مانند عبارات منظم یا همان رجکسها برای اعتبارسنجی دادههای ورودی، باعث تقویت یکپارچگی برنامه میشود. در کادر زیر با کمک کتابخانه re روشی را برای اعتبارسنجی داده ورودی پیادهسازی کردهایم. در این کد داده ورودی باید رشتهای به شکل ایمیل باشد.
1import re
2
3while True:
4 email = input("Enter your email address: ")
5 if re.match(r"[^@]+@[^@]+.[^@]+", email):
6 break
7 else:
8 print("Invalid email address. Please enter a valid email.")
9
10print("Email address entered: " + email)
جمع بندی
دادههای ورودی کاربر یکی از موارد اساسی در برنامه نویسی با زبان پایتون هستند. با کمک این تکنیکها میتوانیم فرایند پردازش دادهها را به صورت تعاملی درآورده و با توجه به نیاز خود شخصیسازی کنیم. در این مطلب، اطلاعاتی را درباره روشها، سینتکس، کاربردها و رویکردهای عملی متفاوتی برای مدیریت هرچه بهتر دادههای ورودی کاربر در پایتون ارائه دادهایم. با دنبال کردن این روشها و دوری کردن از اشتباهات و مشکلات رایج در زمان گرفتن ورودی در پایتون، توسعه دهندگان میتوانند برنامههای مستحکم و کاربر پسندی ایجاد کنند.
در این مطلب از مجله فرادرس، ابتدا درباره استفاده از تابع input()
به عنوان سادهترین روش گرفتن ورودی در پایتون صحبت کردیم. سپس به روشهای مدیریت خطاهای مربوط به عملیات گرفتن داده از کاربر پرداختیم. در نهایت هم با توجه به رویکردهای مختلف در زمان دریافت داده در پایتون، انواع روشها و ابزار مرتبط با این فرایند را بررسی کردیم.
source