نخستین برنامه کامل
در این درس یک فایل پایتون را از خط فرمان اجرا میکنید، با کامنت و آرگومانهای print آشنا میشوید و یاد میگیرید پیامهای خطا را بخوانید.
آنچه در این درس میآموزید
- یک فایل پایتون را از خط فرمان اجرا کنید
- کامنت بنویسید و آرگومانهای sep و end را در print به کار ببرید
- دو خطای رایج SyntaxError و NameError را از هم تشخیص دهید
فهرست مطالب
در درس قبل محیط کار را آماده کردید. حالا وقت آن است که بهجای خطهای آزمایشی در REPL، یک برنامه واقعی در فایل بنویسید، اجرایش کنید و — چون از خطا فرار ندارد — یاد بگیرید وقتی پیام خطا دیدید چه کنید.
ساخت و اجرای فایل برنامه
یک پوشه برای تمرینهای خود بسازید و در آن فایلی به نام card.py ایجاد کنید با این محتوا:
print("=== My Card ===")
print("Name:", "Maryam")
print("City:", "Shiraz")=== My Card === Name: Maryam City: Shiraz
حالا در خط فرمان، داخل همان پوشه، برنامه را اجرا کنید:
python card.pyپایتون فایل را از سطر اول شروع میکند و هر دستور را بهترتیب از بالا به پایین اجرا میکند. دقت کنید در print("نام:", "مریم") دو مقدار با ویرگول دادهایم؛ تابع print هرچه به آن بدهید را با یک فاصله بینشان چاپ میکند.
کامنت؛ یادداشت برای انسانها
هر خطی که با علامت # شروع شود، کامنت (توضیح) است و پایتون هنگام اجرا آن را کامل نادیده میگیرد. کامنت فقط برای انسانها نوشته میشود:
# This program shows the execution order
print("first")
print("second")
# print("third") — this line does not run
print("fourth")first second fourth
کامنت را به دو کار محدود نکنید: توضیح «چرا»ی یک تصمیم، و موقتاً خاموش کردن یک خط هنگام اشکالزدایی. توضیح دادن چیزی که کد واضحش میکند، فقط شلوغی است.
print() با چند مقدار، sep و end
تابع print انعطاف بیشتری دارد. دو آرگومان اختیاری مهم آن sep (جداکننده بین مقادیر) و end (چیزی که بهجای خط جدید در انتها چاپ میشود) هستند:
print("0912", "345", "6789", sep="-")
print("Loading", end="...")
print("done")0912-345-6789 Loading...done
در سطر اول، سه مقدار بهجای فاصله با خط تیره از هم جدا شدهاند. در سطر دوم و سوم، چون end="..." گذاشتهایم، بعد از «Loading» به خط بعدی نمیرویم و کلمه «done» همانجا مینشیند. رفتار پیشفرض هر دو را حدس زدهاید: sep پیشفرضش فاصله است و end پیشفرضش خط جدید.
خطا دشمن شما نیست
از همین امروز عادت کنید: پیام خطا دشمن نیست، توضیح است. دو نوع خطای پرتکرار مبتدیها را ببینید. اگر گیومه بسته را فراموش کنید، پایتون حتی اجازه اجرا نمیدهد:
print("helloSyntaxError: unterminated string literal (detected at line 1)
این یک خطای نحوی (SyntaxError) است؛ یعنی کد از نظر قواعد زبان ناقص است و اصلاً اجرا نمیشود. حالا حالت دوم؛ نام تابع را اشتباه بنویسید:
Print("hello")NameError: name 'Print' is not defined. Did you mean: 'print'?
کد پایتون به بزرگی و کوچکی حروف حساس است؛ Print با حرف بزرگ برای پایتون نامی ناشناخته است. پیام حتی پیشنهاد هم میدهد: «Did you mean: 'print'?». این خطا در میانه اجرا رخ میدهد، یعنی خطهای قبل از آن اجرا شدهاند.
تمرینها
تمرین
تمرین ۱ — فاکتور خرید
برنامهای بنویسید که نام سه کالا را در یک فراخوانی print چاپ کند و بین آنها علامت | بگذارد، بهطوری که خروجی یک خط باشد: «کتاب | قلم | دفتر».
# Write your code hereنمایش راهحل
# Three items with a custom separator
print("Book", "Pen", "Notebook", sep=" | ")Book | Pen | Notebook
::: :::
خلاصه
- برنامه پایتون را در فایل با پسوند
.pyمینویسید و با دستورpython filename.pyاجرا میکنید. - پایتون دستورها را از بالا به پایین و بهترتیب اجرا میکند.
- خطهای
#کامنتاند؛ فقط برای انسان خوانده میشوند و اجرا نمیشوند. - آرگومان
sepجداکننده بین مقادیر وendادامهدهنده خط است؛ پیشفرضشان فاصله و خط جدید است. - SyntaxError یعنی مشکل نحو و اجرای صفر؛ NameError یعنی نامی که پایتون نمیشناسد.
در درس بعدی به سراغ متغیرها میرویم؛ سنگ بنایی که هر برنامهای، از ساده تا پیچیده، روی آن بنا میشود.