~/icsd.ir — bash
SYSTEM_ONLINE

عملگرها و ورودی کاربر

در این فصل با عملگرهای پایتون به‌طور کامل آشنا می‌شویم، یاد می‌گیریم چطور از کاربر ورودی بگیریم و خروجی زیبا با f-string بسازیم.

در این فصل با عملگرهای پایتون به‌طور کامل آشنا می‌شویم، یاد می‌گیریم چطور از کاربر ورودی بگیریم و خروجی زیبا با f-string بسازیم.

عملگرهای حسابی

عملگر نام مثال نتیجه
+ جمع 10 + 3 13
- تفریق 10 - 3 7
* ضرب 10 * 3 30
/ تقسیم 10 / 3 3.333…
// تقسیم صحیح 10 // 3 3
% باقی‌مانده 10 % 3 1
** توان 2 ** 8 256

اولویت عملگرها

result = 2 + 3 * 4         # 14 (نه 20)
result = (2 + 3) * 4       # 20

# اولویت از بیشترین به کمترین:
# **  (توان)
# *, /, //, %  (ضرب و تقسیم)
# +, -  (جمع و تفریق)

# همیشه برای وضوح از پرانتز استفاده کنید
total = (price + tax) * quantity

عملگرهای مقایسه

a = 10
b = 5

print(a == b)    # False  مساوی
print(a != b)    # True   نامساوی
print(a > b)     # True   بزرگ‌تر
print(a < b)     # False  کوچک‌تر
print(a >= b)    # True   بزرگ‌تر مساوی
print(a <= b)    # False  کوچک‌تر مساوی

# مقایسه رشته‌ها (الفبایی - بر اساس Unicode)
print("ali" < "bob")     # True
print("ا" < "ب")         # True

# زنجیره مقایسه - فقط در پایتون!
age = 25
if 18 <= age <= 65:
    print("سن کاری")

عملگرهای منطقی

is_member = True
is_premium = False
age = 30

# and - هر دو باید True باشند
print(is_member and age >= 18)     # True

# or - حداقل یکی True باشد
print(is_member or is_premium)      # True

# not - معکوس
print(not is_premium)               # True

# ترکیب
if (is_member or is_premium) and age >= 18:
    print("مجاز برای ورود")
💡 ارزیابی Short-Circuit:

پایتون and و or را به‌صورت کوتاه ارزیابی می‌کند. در a or b، اگر a درست باشد، b اصلاً ارزیابی نمی‌شود.

عملگرهای انتساب

x = 10

x += 5    # برابر با: x = x + 5    →  x = 15
x -= 3    # x = x - 3              →  x = 12
x *= 2    # x = x * 2               →  x = 24
x /= 4    # x = x / 4               →  x = 6.0
x //= 2   # x = x // 2              →  x = 3.0
x **= 2   # x = x ** 2              →  x = 9.0
x %= 4    # x = x % 4               →  x = 1.0

# برای رشته
greeting = "سلام"
greeting += " دنیا"     # "سلام دنیا"

# برای تکرار
line = "-"
line *= 20             # ----------------- (20 خط تیره)

عملگرهای is و in

is (هویت)

x = None

# درست
if x is None:
    print("خالی است")

# غلط (کار می‌کند ولی PEP 8 می‌گوید نکن)
if x == None:
    pass

# is برای None، True، False استفاده می‌شود
result = []
print(result is None)      # False
print(result == [])        # True

in (عضویت)

name = "محمدعلی"

# جستجو در رشته
print("علی" in name)         # True
print("احمد" in name)        # False

# با لیست
fruits = ["سیب", "موز", "پرتقال"]
print("سیب" in fruits)       # True
print("هلو" not in fruits)   # True

دریافت ورودی از کاربر

تابع input() از کاربر متن می‌گیرد. همیشه رشته برمی‌گرداند:

name = input("نام شما چیست؟ ")
print(f"سلام {name}!")

# گرفتن عدد - باید تبدیل کنیم
age_str = input("سن شما: ")
age = int(age_str)
print(f"سال آینده {age + 1} ساله می‌شوید")

# روش فشرده‌تر
height = float(input("قد شما (متر): "))
print(f"قد شما: {height} متر")

مدیریت خطای ورودی

try:
    age = int(input("سن: "))
    print(f"سن شما {age} است")
except ValueError:
    print("لطفاً یک عدد صحیح وارد کنید!")

قالب‌بندی رشته با f-string

روش مدرن و توصیه‌شده برای ساخت رشته‌های پویا (از Python 3.6 به بعد):

name = "محمدعلی"
age = 35
salary = 25000000

# f-string ساده
print(f"نام: {name}")
print(f"سن: {age} سال")

# عبارت داخل f-string
print(f"سال آینده: {age + 1}")
print(f"دو برابر سن: {age * 2}")

# قالب‌بندی اعداد
pi = 3.14159265
print(f"عدد پی: {pi:.2f}")           # 3.14 (دو رقم اعشار)
print(f"عدد پی: {pi:.4f}")           # 3.1416

# جداکننده هزارگان
print(f"حقوق: {salary:,} تومان")     # 25,000,000 تومان

# عرض ثابت
for i in range(1, 11):
    print(f"{i:3d} - {i*i:5d}")
# خروجی:
#   1 -     1
#   2 -     4
#   3 -     9
# ...

# تراز چپ، راست، وسط
print(f"|{'علی':<10}|")     # |علی       |  (چپ)
print(f"|{'علی':>10}|")     # |       علی|  (راست)
print(f"|{'علی':^10}|")     # |   علی    |  (وسط)

# Debug mode (Python 3.8+)
x = 42
print(f"{x=}")              # x=42

روش‌های قدیمی‌تر (برای آشنایی)

name = "علی"
age = 35

# روش format() (هنوز رایج)
text1 = "نام: {}, سن: {}".format(name, age)
text2 = "نام: {n}, سن: {a}".format(n=name, a=age)

# روش % (قدیمی، اجتناب کنید)
text3 = "نام: %s, سن: %d" % (name, age)

# f-string بهترین است:
text4 = f"نام: {name}, سن: {age}"  # ← این را استفاده کنید
# sep - جداکننده آیتم‌ها
print("سیب", "موز", "پرتقال")              # سیب موز پرتقال
print("سیب", "موز", "پرتقال", sep=" - ")   # سیب - موز - پرتقال
print("1", "2", "3", sep=",")              # 1,2,3

# end - چیزی که بعد از print چاپ می‌شود (پیش‌فرض n)
print("سلام", end=" ")
print("دنیا")                              # سلام دنیا

# روی هم چاپ کردن (مثل progress bar)
import time
for i in range(5):
    print(f"rپیشرفت: {i*20}%", end="")
    time.sleep(0.5)
print()

تمرین فصل

🏋️ تمرین ۱ – ماشین‌حساب ساده:

برنامه‌ای بنویسید که دو عدد از کاربر بگیرد و جمع، تفریق، ضرب و تقسیم آن‌ها را با f-string نمایش دهد.

🏋️ تمرین ۲ – تبدیل دما:

دما به سانتی‌گراد را بگیرید و معادل فارنهایت آن را چاپ کنید: F = C * 9/5 + 32

🏋️ تمرین ۳ – شناسنامه:

نام، نام خانوادگی و سال تولد را بگیرید و یک کارت شناسنامه با f-string زیبا چاپ کنید (شامل سن، با مرز خط‌چین).

🏋️ تمرین ۴ – فاکتور:

قیمت محصول و تعداد را بگیرید. با ۹٪ مالیات، فاکتور با فرمت زیر چاپ کنید:

━━━━━━━━━━━━━━━━━━━━━━━━━
قیمت واحد:        100,000
تعداد:                  3
زیرمجموع:         300,000
مالیات (۹٪):       27,000
━━━━━━━━━━━━━━━━━━━━━━━━━
مبلغ نهایی:       327,000
━━━━━━━━━━━━━━━━━━━━━━━━━

جمع‌بندی

در این فصل یاد گرفتیم:

  • عملگرهای حسابی، مقایسه‌ای، منطقی و انتساب
  • عملگرهای خاص is و in
  • دریافت ورودی با input() و تبدیل به نوع مناسب
  • قالب‌بندی پیشرفته با f-string (روش مدرن)
  • پارامترهای sep و end در print()

نمایش سایت

رنگ سایت
حالت نمایش
اندازهٔ متن
خوانایی

این تنظیمات فقط روی مرورگر شما ذخیره می‌شود.