پث‌وایز

شروع برنامه‌نویسی با پایتون (Intro to Python) · درس ۴ از ۱۲ · ۱۲ دقیقه

ورودی و نوع داده‌ها (Input and Types)

input() به برنامه‌ت اجازه می‌ده یه سؤال بپرسه، ولی جواب همیشه به‌صورت متن برمی‌گرده. نوع‌های اصلی داده رو یاد می‌گیری و اینکه چطور بینشون تبدیل کنی، که دیگه "7" + "3" بهت 73 نده.

پرسیدن از کاربر

input() یه سؤال می‌پرسه و منتظر می‌مونه

name = input("Your name? ") متن سؤال رو نشون می‌ده، منتظر می‌مونه کاربر یه چیزی تایپ کنه و Enter بزنه، بعد همون چیزی رو که تایپ کرده پس می‌ده، که توی name نگه داشته می‌شه. فاصله‌ی آخر متن سؤال باعث می‌شه جواب به علامت سؤال نچسبه.

اگه سارا جلوی سؤال اسمش رو تایپ کنه، حالا name مقدار "Sara" رو داره و برنامه می‌ره سراغ خط بعد.

name = input("اسمت چیه؟ ")
print("سلام، " + name)

خروجی

اسمت چیه؟ سارا
سلام، سارا

اینجا کاربر «سارا» رو تایپ کرده و Enter زده. خط اول خروجی متن سؤاله و جلوش چیزیه که سارا تایپ کرده؛ خط دوم رو خود برنامه چاپ کرده. توی اپ این مثال ثابته، برای همین جوابی که تایپ شده برات نشون داده شده.

چهار نوع پایه

هر مقداری یه نوع داره

پایتون حواسش هست چه جور مقداری رو نگه داشته. چهار تایی که بیشتر از همه باهاشون کار داری: int، عدد صحیح مثل 7؛ float، عدد اعشاری مثل 7.5؛ str، متن بین گیومه مثل "7"؛ و bool (بولی)، که فقط True یا False‌ـه. نوع مقدار تعیین می‌کنه عملگرها چی‌کار کنن: + دو تا عدد رو جمع می‌کنه ولی دو تا رشته رو به هم می‌چسبونه. type(x) بهت می‌گه x از کدوم نوعه.

type(7.5) نشون می‌ده <class 'float'> و type("7") نشون می‌ده <class 'str'>.

خودت رو امتحان کن

هر مقدار رو به نوعش وصل کن

جواب رو ببین
  • 7 → int
  • 7.5 → float
  • "7" → str
  • True → bool

نکته‌ی اصلی

input() همیشه متن پس می‌ده

هر چی کاربر تایپ کنه به‌صورت رشته می‌رسه، حتی اگه فقط رقم باشه. 7 تایپ کنی، "7" می‌گیری، یعنی کاراکتر، نه عدد. برای یه اسم مشکلی نیست، ولی توی حساب‌وکتاب دردسر می‌شه: + روی دو تا رشته اون‌ها رو به هم می‌چسبونه به‌جای این‌که جمع کنه.

a = "7" و b = "3"، درست همون‌طوری که دو تا input() بهت می‌دن: a + b می‌شه "73".

خودت رو امتحان کن

a = "7"
b = "3"
print(a + b)
  1. 73
  2. 10
  3. 7 3
  4. 7 + 3
جواب رو ببین
73

قدم‌به‌قدم ببین

  1. input() "7" و "3" رو به‌صورت متن تحویل می‌ده

    کاربر اول 7 و بعد 3 رو تایپ می‌کنه. input() هر کدوم رو می‌فرسته توی یه جعبه‌ی جدا، a و b، و مقدارها با گیومه و یه برچسب کوچیک str کشیده شدن. رقم‌هایی که با کیبورد تایپ می‌شن هم به‌صورت متن می‌رسن.

  2. a + b اون‌ها رو می‌چسبونه و می‌شه "73"

    زیر یه خط، a + b یه جعبه می‌ده که توش "73"‌ـه، هنوز با برچسب str. با دو تا رشته، + جمع نمی‌کنه: کاراکترها رو پشت سر هم می‌چسبونه، اول 7 بعد 3.

  3. int() "7" و "3" رو تبدیل می‌کنه به 7 و 3

    هر رشته از روی یه فلش int() رد می‌شه و سمت راست به‌صورت یه عدد ساده درمیاد، بدون گیومه و با برچسب int. جعبه‌های سمت چپ هنوز "7" و "3" رو دارن: int() یه مقدار جدید پس می‌ده و اصلی رو دست نمی‌زنه.

  4. 7 + 3 می‌شه 10، و int("7.5") خطا می‌ده

    حالا 7 + 3 واقعاً جمع می‌کنه: جعبه‌اش 10 رو نشون می‌ده با برچسب int، کنار همون "73" قبلی. پایین‌تر، کنار int("7.5") یه ضربدر نارنجی و یه برچسب ValueError هست: متنی که عدد صحیح نیست نمی‌تونه int بشه، پس برای اعشار از float() استفاده کن.

خودت رو امتحان کن

a = int("7")
b = int("3")
print(a + b)
  1. 10
  2. 73
  3. 7 + 3
  4. خطا
جواب رو ببین
10
print(int("7") + 1)
print(float("7.5"))
print(str(7) + "3")
print(int(7.9))

خروجی

8
7.5
73
7

int() متن رو به عدد صحیح تبدیل می‌کنه و float() به عدد اعشاری. str() برعکس کار می‌کنه، از عدد به متن، برای همین خط ۳ "7" و "3" رو به هم می‌چسبونه. خط آخر خیلی‌ها رو غافلگیر می‌کنه: int(7.9) می‌شه 7، چون int() قسمت اعشاری رو می‌بُره؛ گرد نمی‌کنه.

bill = float(input("مبلغ؟ "))
tip = bill * 0.1
print(f"انعام: {tip}")

خروجی

مبلغ؟ 40
انعام: 4.0

یه ماشین‌حساب انعام. کاربر 40 رو تایپ کرده. وقتی input() رو توی float() می‌ذاری، جواب همون لحظه تبدیل می‌شه، پس bill عدد 40.0 رو داره و حساب درست کار می‌کنه. همین الگو با int() راه معمول پرسیدن یه عدد صحیحه: age = int(input("Age? ")).

خودت رو امتحان کن

برنامه‌ی نگار int("7.5") رو اجرا می‌کنه. چی می‌شه؟

  1. 7 می‌ده
  2. 8 می‌ده
  3. با ValueError متوقف می‌شه
  4. 7.5 می‌ده
جواب رو ببین

با ValueError متوقف می‌شه

درسته. int() فقط متنی رو قبول می‌کنه که عدد صحیح باشه، پس "7.5" برنامه رو با ValueError: invalid literal for int() with base 10: '7.5' متوقف می‌کنه. float("7.5") کار می‌کرد.

خودت رو امتحان کن

age = ____(input("Age? "))
print(age + 1)

int · str · input · print

جواب رو ببین

int

درسته. int() متن تایپ‌شده رو به عدد صحیح تبدیل می‌کنه، پس age + 1 واقعاً حساب می‌کنه: اگه 30 تایپ کنی، 31 چاپ می‌شه.

مرور درس

  • input("prompt") متن سؤال رو نشون می‌ده، منتظر Enter می‌مونه و چیزی رو که کاربر تایپ کرده پس می‌ده.
  • چهار نوع پایه int (7)، float (7.5)، str ("7") و bool (True/False) هستن؛ type() می‌گه کدومه.
  • input() همیشه str پس می‌ده، پس دو تا عدد تایپ‌شده با + می‌شن "73"، نه 10.
  • int() و float() و str() تبدیل می‌کنن؛ الگوی معمول age = int(input("Age? "))‌ـه.
  • int("7.5") یه ValueError‌ـه، ولی int(7.9) به‌جای گرد کردن می‌بُره و می‌شه 7.

فقط نخونش، نگهش دار

پث‌وایز هر ایده رو درست قبل از اینکه فراموشش کنی با یه سؤال کوتاه برمی‌گردونه. رایگان روی اندروید و وب، به فارسی و انگلیسی.

Cafe Bazaar Myket باز کردن نسخه‌ی وب

همه‌ی درس‌های این دوره

  1. اولین برنامه‌ت (Your First Program)
  2. متغیرها: اسم برای مقدارها (Variables)
  3. رشته‌ها: کار با متن (Strings)
  4. ورودی و نوع داده‌ها (Input and Types)
  5. تصمیم‌گیری با if (Conditionals)
  6. لیست‌ها: کلی مقدار یه‌جا (Lists)
  7. حلقه‌ها: دوباره و دوباره (Loops)
  8. تابع‌ها: به یه کار اسم بده، دوباره استفاده‌ش کن (Functions)
  9. دیکشنری‌ها: پیدا کردن با اسم (Dictionaries)
  10. خوندن پیام‌های خطا (Reading Errors)
  11. ذخیره و خوندن فایل (Files)
  12. پروژه‌ی آخر: حساب خرج‌ها (Final Project)