عملگرها و ورودی کاربر
در این فصل با عملگرهای پایتون بهطور کامل آشنا میشویم، یاد میگیریم چطور از کاربر ورودی بگیریم و خروجی زیبا با 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("مجاز برای ورود")
پایتون 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}" # ← این را استفاده کنید
پارامترهای print()
# 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()