مقاله قبلی: حلقه های تکرار for و while در زبان برنامه نویسی پایتون
در پایتون برای اعمال ورودی و خروجی به ترتیب از توابعی مثل input () و print() استفاده می شود. حال اجازه دهید ابتدا به تابع خروجی print() بپردازیم.
-
تابع print
یادآوری: در پایتون 2 می توانید دستور print را بدون پرانتز بنویسید درحالی که در پایتون 3، این کار منجر به ایجاد خطای نحوی می شود و باید print را یک تابع در نظر گرفته و پرانتزهای آن را نیز بنویسید.
از تابع print() معمولا برای چاپ خروجی دستورات بر روی صفحه نمایش استفاده می شود. اما بهتر است بدانید که می توانیم از همین تابع برای ارسال خروجی دستورات به یک فایل پایتون هم استفاده کنیم. البته این مبحث، موضوع مقاله فعلی ما نیست و در بخش های بعدی به آن خواهیم پرداخت.
حال به قطعه کد زیر توجه کنید. اولین تابع print یک رشته معمولی را چاپ می کند اما دومین تابع print()، بدون این که شما به طور دستی فاصله ای را بعد از انتهای رشته لحاظ کنید به صورت خودکار بین رشته موجود و مقدار متغیر a به اندازه یک کاراکتر، فاصله می اندازد.
اما جالب است بدانید که شما می توانید نوع این فاصله را هم تغییر دهید. چرا که سینتکس و نحو واقعی تابع print به صورت زیر است:
منظور از object مقادیری است که قرار است چاپ شوند. جداکننده sep نیز مشخص کننده کاراکتری است که مقادیر بخش اول را از هم تفکیک می کند البته به صورت پیش فرض، مقدار این خصوصیت برابر است با کاراکتر فاصله. بعد از آن که همه مقادیر چاپ شدند کاراکتری که در قسمت end نوشته اید چاپ می شود. مقدار پیش فرض این خصوصیت هم برابر است با کاراکتر خط جدید (/) .
file نیز به شیئی اشاره می کند که قرار است مقادیر در آن چاپ شوند. مقدار پیش فرض این قسمت برابر sys.stdout (screen) است به همین دلیل وقتی شما فایلی را برای دستور print مشخص نمی کنید خروجی شما، بر روی صفحه نمایش چاپ می شود.
در مثال زیر، در اولین تابع print، به دلیل ذکر نشدن بخش sep ، به صورت پیش فرض از کاراکتر فاصله (space) برای جدا کردن مقادیر از یکدیگر استفاده شده است. در دومین تابع print، کاراکتر ستاره (*) حکم جدا کننده را دارد و نهایتا در سومین تابع print از علامت # به عنوان جداکننده و کاراکتر & به عنوان کاراکتر پایانی استفاده شده است.
گاهی اوقات دوست دارید که خروجی رشته خود را به شکلی جذاب قالب بندی کنید. در چنین مواقعی می توانید از تابع str.format() استفاده کنید. این تابع برای هر شیئی از نوع رشته قابل رویت است.
حتی شما می توانید از کاراکتر آکولاد { } به عنوان یک نگه دارنده نیز استفاده کرده و ترتیب چاپ شدن رشته ها را توسط اندیس هایی که داخل این نگه دارنده قرار می گیرند مشخص کنید. مثلا در اولین تابع print مثال زیر، مولفه اول تابع format در قسمتی که با اندیس صفر مشخص شده قرار می گیرد و مولفه دوم نیز در قسمت {1} . در تابع print دوم هم براحتی با تعویض جای این دو اندیس، به پایتون می گوییم که ابتدا رشته’butter’ و سپس رشته ‘bread’ را چاپ کند.
علاوه بر این با ذکر نام متغیرهای رشته ای در داخل علامت {} هم می توانید نحوه چاپ شدن رشته ها را به پایتون اعلام کنید.
اگر به یاد داشته باشید در زبان c تابعی به نام printf داشتیم که برای فرمت دهی رشته ها و اعداد به کار می رفت. حال در زبان پایتون هم می توانیم با به کاربردن عملگر % در داخل تابع print ، رشته ها را قالب بندی کنیم. مثلا در قطعه کد زیر، عبارت %3.2f باعث می شود که مقدار متغیر x تا 2 رقم اعشار به سمت بالا گرد شود و %3.4f نیز عدد 12.3456789 را تا 4 رقم اعشار به سمت بالا گرد می کند.
-
تابع input()
تا به حال برنامه هایی که می نوشتیم ایستا بودند نه پویا به این معنا که مثلا مقادیر متغیرها را خودمان در سورس برنامه مشخص می کردیم. اما اگر بخواهیم برنامه خود را انعطاف پذیرتر کنیم بایستی ورودی های برنامه را از خود کاربر دریافت کنیم. تابعی که این امکان را برای ما فراهم می کند تابع input() است. نحو این تابع به صورت زیر می باشد:
منظور از prompt همان رشته اییست که در صفحه نمایش چاپ شده و از کاربر می خواهد که مقدار مورد نظر را وارد (تایپ) کند. این بخش اختیاری است. یعنی می توانید آن را ننویسید اما نوشتن آن به خوانایی برنامه و فهم کاربر کمک شایانی می کند.
مثلا با اجرای قطعه کد بالا، اشاره گر موس به شکل چشمک زن درآمده و منتظر می ماند که کاربر عددی را وارد کند. سپس عدد دریافتی را در متغیر num ریخته و نهایتا مقدار متغیر num را در خروجی نمایش می دهد.
اما نکته حائز اهمیت در قطعه کد بالا این بود که عدد دریافتی توسط کاربر (10) به صورت یک رشته (’10’) در نظر گرفته می شود نه یک عدد. حال اگر بخواهیم این رشته را به عدد صحیح یا اعشاری تبدیل کنیم باید به ترتیب از توابع int() و float() استفاده کنیم.
حال اگر کاربر به جای وارد کردن یک عدد، یک عبارت محاسباتی را وارد کند دیگر دو تابع بالا قادر به تبدیل کردن آن نخواهند بود و خطای ValueError را تولید می کنند. این جاست که پای تابع دیگری به نام eval() به میان می آید که قادر است حتی عبارات محاسباتی وارد شده توسط کاربر را هم ارزیابی کرده و نتیجه را به عدد صحیح تبدیل کند. قطعه کد زیر به خوبی این واقعیت را اشکار می سازد.
در این مقاله با تابع print و تابع input() از سری آموزش های زبان برنامه نویسی پایتون آشنا شدید. با ادامه این آموزش ها در مقالات بعدی همراه ما باشید.
ترجمه: رقیه آقایاری