این تمرینات نه تنها مهارتهای منطقی و تحلیلی شما را در زبان پایتون تقویت میکنند، بلکه درک عمیقی از ساختارهای شرطی و نحوه ترکیب آنها با دیگر مفاهیم برنامهنویسی ارائه میدهند. آموختن نحوه استفاده از if، زمینهساز یادگیری مفاهیم پیشرفتهتر مانند حلقهها، توابع و شیگرایی میشود.
هنگام پاسخ دادن به سوالات if در پایتون، ابتدا مسئله را به دقت بخوانید و ورودی و خروجی مورد انتظار را شناسایی کنید. سپس مسئله را به بخشهای کوچکتر تقسیم کنید و هر بخش را به صورت گام به گام پیادهسازی کنید. استفاده از نامهای متغیر واضح میتواند به فهم بهتر منطق برنامه کمک کند. همچنین در نظر داشته باشید که بررسی شرایط حاشیهای و ورودیهای غیرمنتظره، کد شما را مقاومتر میسازد. سعی کنید .
در ادامه به سوالات و تمرینات If در پایتون با جواب در سطح مقدماتی و پیشرفته دسترسی دارید.
تمرین ۱: بررسی سن کاربر (بزرگسال بودن)
برنامهای بنویسید که از کاربر سن را بپرسد و اگر سن او ۱۸ یا بیشتر بود، پیام «شما بزرگسال هستید» را چاپ کند.
age = int(input("لطفاً سن خود را وارد کنید: "))
if age >= 18:
print("شما بزرگسال هستید")
- ابتدا از کاربر سن دریافت میکنیم و با استفاده از ()int آن را به عدد صحیح تبدیل میکنیم.
- سپس با دستور شرطی if بررسی میکنیم که آیا سن وارد شده بزرگتر یا مساوی ۱۸ هست یا خیر.
- اگر شرط برقرار بود، پیام «شما بزرگسال هستید» چاپ میشود.
تمرین۲: بررسی زوج بودن عدد
فرض کنید علی و رضا با یکدیگر بازی میکنند. آنها یک عدد انتخاب میکنند و اگر آن عدد زوج باشد علی برنده میشود و اگر فرد باشد رضا برنده میشود. برنامهای بنویسید که یک عدد صحیح گرفته و بر اساس زوج یا فرد بودن آن اعلام کند کدام بازیکن برنده است (به عنوان مثال، برای ورودی ۴ نتیجه «علی برنده است» و برای ورودی ۷ نتیجه «رضا برنده است» باشد).
number = int(input("یک عدد وارد کنید: "))
if number % 2 == 0:
print("علی برنده است") # اگر عدد بر ۲ بخشپذیر باشد، زوج است
else:
print("رضا برنده است") # در غیر این صورت، عدد فرد است
در این کد، عدد ورودی توسط کاربر گرفته میشود و با استفاده از عملگر % بررسی میشود که باقیمانده تقسیم عدد بر ۲ صفر است یا نه.اگر باقیمانده صفر باشد، عدد زوج است و شرط if اجرا میشود؛ در غیر این صورت else فعال میشود و عدد فرد در نظر گرفته میشود.
عدد زوج، عددی است که باقی مانده اش بر دو ،صفر باشد.
عدد فرد، عددی است که باقی مانده اش بر دو ،یک باشد(یا صفر نباشد.)
تمرین۳: بررسی رمز عبور
password = input("رمز عبور را وارد کنید: ")
if password == "admin123":
print("دسترسی داده شد")
کد ابتدا با input() یک رمز عبور از کاربر میگیرد.
سپس با استفاده از شرط if بررسی میکند آیا مقدار واردشده دقیقاً برابر باadmin123 است یا نه.
اگر شرط برقرار باشد، پیام “دسترسی داده شد” چاپ میشود.
اگر شرط برقرار نباشد، برنامه بدون خروجی خاصی پایان مییابد (چونelse ندارد).
تمرین۴: سلام به علی
از کاربر نام بپرسید، اگر نام وارد شده “Ali” بود، پیام «سلام علی!» را چاپ کنید.
name = input("نام خود را وارد کنید: ")
if name == "Ali":
print("سلام علی!")
نام از کاربر دریافت میشود. مقایسه با “Ali” انجام میشود.در صورت تطابق، پیام چاپ میشود.
تمرین۵: عدد بین ۱۰ تا ۲۰
برنامهای بنویسید که اگر عدد وارد شده بین ۱۰ تا ۲۰ بود، پیام «عدد در بازه است» را چاپ کند.
num = float(input("یک عدد وارد کنید: "))
if 10 <= num <= 20:
print("عدد در بازه است")
عدد از کاربر گرفته میشود.بررسی میشود که آیا عدد در بازه ۱۰ تا ۲۰ است.در صورت برقرار بودن شرط، پیام چاپ میشود.
تمرین ۶: تشخیص مثبت، منفی یا صفر
در یک برنامهی هواشناسی، عددی نشاندهندهی تغییرات دما است. اگر این عدد مثبت باشد یعنی دما افزایش یافته، اگر منفی باشد یعنی دما کاهش یافته و اگر صفر باشد یعنی دما ثابت مانده است. برنامهای بنویسید که مقدار عددی را گرفته و وضعیت دما را مشخص کند.
change = float(input("مقدار تغییر دما را وارد کنید: "))
if change > 0:
print("دما افزایش یافته است")
elif change < 0:
print("دما کاهش یافته است")
else:
print("تغییری در دما رخ نداده است")
کد ابتدا یک عدد اعشاری از کاربر دریافت میکند که نمایانگر تغییر دماست.
سپس با استفاده از ساختار if-elif-else سه حالت بررسی میشود:
اگر عدد بیشتر از صفر باشد، پیام “دما افزایش یافته است” چاپ میشود.
اگر عدد کمتر از صفر باشد، پیام “دما کاهش یافته است” نمایش داده میشود.
اگر عدد دقیقاً صفر باشد، پیام “تغییری در دما رخ نداده است” نشان داده میشود.
این کد نمونهای از تصمیمگیری چند حالته در پایتون است.
تمرین ۷: تبدیل نمره به درجه
score = int(input("نمره (۰ تا ۱۰۰) را وارد کنید: "))
if score >= 90:
print("عالی")
elif score >= 75:
print("خوب")
elif score >= 50:
print("قبول")
else:
print("رد")
در این برنامه، ابتدا نمرهای بین ۰ تا ۱۰۰ از کاربر گرفته میشود.
سپس با استفاده از ساختار شرطی if-elif-else بررسی میشود که عدد وارد شده در کدام بازه قرار دارد:
اگر نمره ۹۰ یا بیشتر باشد، پیام «عالی» چاپ میشود. اگر بین ۷۵ تا ۸۹ باشد، پیام «خوب» نمایش داده میشود.
اگر بین ۵۰ تا ۷۴ باشد، پیام «قبول» چاپ میشود.
در غیر این صورت (یعنی کمتر از ۵۰)، پیام «رد» نمایش داده میشود.
تمرین ۸: سال کبیسه
در تقویم میلادی، سالی کبیسه محسوب میشود که یا بر ۴ بخشپذیر باشد و بر ۱۰۰ بخشپذیر نباشد، یا اینکه بر ۴۰۰ بخشپذیر باشد. برنامهای بنویسید که یک سال را بگیرد و مشخص کند آیا سال کبیسه است یا نه.
year = int(input("یک سال را وارد کنید: "))
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
print("سال کبیسه است")
else:
print("سال کبیسه نیست")
در این کد، از ترکیب شرطهای منطقی and و or استفاده شده تا بررسی کنیم آیا سال وارد شده کبیسه است یا نه.
طبق قانون، سالهایی که بر ۴ بخشپذیرند و همزمان بر ۱۰۰ بخشپذیر نیستند کبیسهاند. اما اگر سالی بر ۴۰۰ بخشپذیر باشد، حتی اگر بر ۱۰۰ هم بخشپذیر باشد، باز هم کبیسه محسوب میشود.
این تمرین برای آموزش شرطهای ترکیبی، عملگرهای منطقی و تصمیمگیری پیچیدهتر بسیار مناسب است و در پروژههای واقعی مانند تقویم و مدیریت زمان کاربرد دارد.
تمرین۹: خارج از بازه ۵ تا ۱۵
برنامهای بنویسید که اگر عدد وارد شده کوچکتر از ۵ یا بزرگتر از ۱۵ بود، پیام مناسبی چاپ کند.
num = float(input("یک عدد وارد کنید: "))
if num < 5 or num > 15:
print("عدد کوچکتر از ۵ یا بزرگتر از ۱۵ است")
در این برنامه، عددی از کاربر گرفته میشود و با استفاده از شرط منطقی or بررسی میشود که آیا عدد وارد شده:یا کمتر از ۵ است یا بزرگتر از ۱۵ است. اگر یکی از این دو شرط برقرار باشد، پیام «عدد کوچکتر از ۵ یا بزرگتر از ۱۵ است» نمایش داده میشود.
در غیر این صورت، برنامه بدون چاپ پیام خاصی پایان مییابد. این تمرین برای آشنایی با شرطهای ترکیبی و عملگر or مناسب است.
تمرین۱۰: دو عدد مثبت
از کاربر دو عدد بگیرید و اگر هر دو بزرگتر از ۰ بودند، پیام «اعداد مثبت هستند» را چاپ کنید.
x = float(input("عدد اول را وارد کنید: "))
y = float(input("عدد دوم را وارد کنید: "))
if x > 0 and y > 0:
print("اعداد مثبت هستند")
در این کد، دو عدد از کاربر گرفته میشود و با استفاده از شرط ترکیبی and بررسی میشود که هر دو عدد بزرگتر از صفر باشند.اگر هر دو عدد مثبت باشند، پیام «اعداد مثبت هستند» چاپ میشود.در صورتی که یکی از اعداد منفی یا صفر باشد، هیچ پیامی نمایش داده نمیشود.این مثال نشان میدهد چطور با عملگر and میتوان همزمان چند شرط را بررسی کرد.
تمرین ۱۱: بررسی بخشپذیری
یک فروشنده بستههایی حاوی تعداد مشخصی کالا تهیه میکند. او میخواهد بداند آیا میتواند محصولات خود را دقیقاً در جعبههایی با ظرفیت معین قرار دهد یا خیر. به عنوان مثال اگر ۲۰ محصول داشته باشد و هر جعبه ظرفیت ۵ محصول را داشته باشد، میتواند آنها را دقیقاً در ۴ جعبه قرار دهد (بدون باقیمانده). برنامهای بنویسید که دو عدد از ورودی بگیرد: اولی تعداد کل محصولات و دومی ظرفیت هر جعبه. برنامه باید چاپ کند آیا تعداد محصولات کاملاً در جعبهها بخشپذیر است یا خیر (یعنی محصول اضافی باقی نماند). مثلا برای ورودی ۲۰ و ۵ چاپ کند «بخشپذیر است» ولی برای ۲۰ و ۶ چاپ کند «بخشپذیر نیست».
total_items = int(input("تعداد کل محصولات: "))
box_capacity = int(input("ظرفیت هر جعبه: "))
if total_items % box_capacity == 0:
print("بخشپذیر است") # باقیماندهی تقسیم صفر است
else:
print("بخشپذیر نیست") # باقیماندهی تقسیم غیرصفر است
در این برنامه ابتدا تعداد کل محصولات و ظرفیت هر جعبه بهعنوان ورودی از کاربر دریافت میشود.سپس با استفاده از عملگر باقیمانده (%) بررسی میشود که آیا عدد کل محصولات بر ظرفیت هر جعبه بخشپذیر است یا نه.اگر باقیماندهٔ تقسیم برابر صفر باشد، یعنی میتوان محصولات را بدون اضافه آمدن درون جعبهها قرار داد و برنامه پیام «بخشپذیر است» را چاپ میکند.اما اگر باقیمانده صفر نباشد، یعنی بخشی از محصولات در آخر اضافه میمانند و کامل در جعبهها جا نمیگیرند؛ در این حالت پیام «بخشپذیر نیست» نمایش داده میشود.
تمرین۱2: اجازه ورود به باشگاه (بر اساس سن و قد)
age = int(input("سن خود را وارد کنید: "))
height = float(input("قد خود را وارد کنید (سانتیمتر): "))
if age > 18 and height > 160:
print("شما اجازه ورود به باشگاه را دارید.")
else:
print("متأسفانه شرایط ورود را ندارید.")
از کاربر سن را دریافت کرده و با ()int به عدد صحیح تبدیل میکنیم. قد را دریافت کرده و با ()float به عدد اعشاری تبدیل میکنیم. در شرط if بررسی میکنیم که آیا سن بیشتر از ۱۸ و قد بیشتر از ۱۶۰ است. اگر شرط برقرار باشد، پیام مجوز ورود نمایش داده میشود؛ در غیر این صورت پیام عدم تطابق شرایط چاپ میشود.
تمرین۱3:چراغ راهنمایی
برنامهای برای یک چهارراه طراحی کنید. ورودی برنامه رنگ چراغ راهنمایی (قرمز، زرد یا سبز) به صورت یک رشته است. برنامه باید بر اساس رنگ ورودی، دستور متناسب را چاپ کند: اگر قرمز بود پیام «ایست»، اگر زرد بود پیام «آماده باشید» و اگر سبز بود پیام «حرکت کنید» نمایش دهد. برای هر ورودی دیگری پیام «ورودی نامعتبر است» چاپ شود (مثلا اگر کاربر کلمه دیگری وارد کرد).
light = input("رنگ چراغ (قرمز/زرد/سبز): ").strip().lower()
if light == "قرمز":
print("ایست")
elif light == "زرد":
print("آماده باشید")
elif light == "سبز":
print("حرکت کنید")
else:
print("ورودی نامعتبر است") # اگر چیزی غیر از این سه رنگ وارد شود
در این کد، ابتدا رنگ چراغ راهنمایی از کاربر گرفته میشود. تابع strip فاصلههای اضافی ابتدای و انتهای ورودی را حذف میکند و lower() ورودی را به حروف کوچک تبدیل میکند تا مقایسهها دقیقتر انجام شوند.سپس با استفاده از شرطهای if-elif-else بررسی میشود که ورودی چه رنگی است: اگر «قرمز» وارد شود، پیام «ایست» چاپ میشود.اگر «زرد» وارد شود، پیام «آماده باشید» نمایش داده میشود.
اگر «سبز» وارد شود، پیام «حرکت کنید» نشان داده میشود.اگر کاربر چیزی غیر از این سه رنگ وارد کند، برنامه پیام «ورودی نامعتبر است» چاپ میکند.
تمرین۱4: بررسی رمز عبور ساده
در یک قفل دیجیتالی ساده، برای باز شدن در لازم است رمز چهار رقمی درست وارد شود. برنامهای بنویسید که یک رمز عددی (چهار رقم) را به عنوان رمز صحیح در خود داشته باشد (به طور ثابت در کد تعریف کنید) و سپس از کاربر یک رمز دریافت کند. اگر رمز وارد شده با رمز صحیح مطابقت داشت پیام «باز شد» و در غیر این صورت پیام «رمز اشتباه است» چاپ کند. (فرض کنید همیشه چهار رقم وارد میشود.)
correct_password = "4826" # رمز صحیح از پیش تعریفشده
entered = input("رمز چهار رقمی را وارد کنید: ")
if entered == correct_password:
print("باز شد")
else:
print("رمز اشتباه است")
این برنامه یک رمز چهار رقمی را بهصورت ثابت در متغیر correct_password ذخیره کرده است.سپس از کاربر میخواهد رمزی وارد کند و آن را با رمز اصلی مقایسه میکند.اگر رمز واردشده دقیقاً با مقدار اصلی برابر باشد، پیام «باز شد» چاپ میشود. در غیر این صورت، یعنی اگر رمز اشتباه باشد، پیام «رمز اشتباه است» نمایش داده میشود.
تمرین 15: قدر مطلق عدد
برنامهای بنویسید که یک عدد (صحیح یا اعشاری) را از ورودی دریافت کرده و قدر مطلق آن را محاسبه و چاپ کند. قدر مطلق یک عدد مقدار آن عدد بدون در نظر گرفتن علامت آن است. مثلا برای ورودی -8.5 خروجی باید 8.5 باشد و برای ورودی 3 خروجی همان 3 چاپ شود. (از توابع آماده مانند abs استفاده نکنید و فقط از ساختارهای شرطی بهره بگیرید.)
num = float(input("یک عدد وارد کنید: "))
if num < 0:
absolute = -num
else:
absolute = num
print("قدر مطلق عدد:", absolute)
در این برنامه، ابتدا عددی بهصورت اعشاری یا صحیح از کاربر گرفته میشود.
سپس با استفاده از شرط if بررسی میشود که آیا عدد منفی است یا نه:اگر عدد منفی باشد، با ضرب آن در -1 مقدار مثبت آن بهدست میآید و بهعنوان قدر مطلق در متغیر absolute ذخیره میشود.اگر عدد منفی نباشد (یعنی صفر یا مثبت باشد)، همان عدد بدون تغییر بهعنوان قدر مطلق در نظر گرفته میشود.
تمرین16: عدد عجیب یا عادی
در سرزمینی دور دستگاهی وجود دارد که اعداد را به دو دسته «عجیب» (Weird) و «عادی» (Not Weird) تقسیم میکند. قوانین دستگاه به این صورت است: اگر عدد ورودی فرد باشد خروجی «Weird» است. اگر عدد زوج و بین ۲ تا ۵ باشد خروجی «Not Weird» است. اگر عدد زوج و بین ۶ تا ۲۰ باشد خروجی «Weird» است. اگر عدد زوج و بزرگتر از ۲۰ باشد خروجی «Not Weird» خواهد بود. برنامهای بنویسید که چنین دستگاهی را شبیهسازی کند. به عنوان مثال ورودی ۳ خروجی «Weird» و ورودی ۲۴ خروجی «Not Weird» بدهد.
n = int(input("یک عدد صحیح وارد کنید: "))
if n % 2 == 1:
print("Weird")
else:
if 2 <= n <= 5:
print("Not Weird")
elif 6 <= n <= 20:
print("Weird")
else:
print("Not Weird")
در این کد، ابتدا یک عدد صحیح از کاربر گرفته میشود.
سپس با استفاده از شرطها بررسی میشود: اگر عدد فرد باشد (n % 2 == 1)، پیام “Weird” چاپ میشود.اگر عدد زوج باشد و بین ۲ تا ۵ باشد “Not Weird”و بین ۶ تا ۲۰ باشد می شود “Weird”و اگر بزرگتر از ۲۰ باشد می شود “Not Weird”
ساختار شرطی تو در تو، برای پوشش دادن حالتهای مختلف بهکار رفته است.
تمرین۱۷: ماشین حساب ساده
یک ماشین حساب متنی تصور کنید که از کاربر دو عدد و یک عملگر ریاضی (+، -، *، /) میگیرد و نتیجه عملیات مربوط را چاپ میکند. به عنوان مثال اگر کاربر 5، 3 و * را وارد کند خروجی 15 (حاصل ضرب) نمایش داده شود. برنامهای بنویسید که این رفتار را شبیهسازی کند. در صورتی که عملگر وارد شده غیر از چهار عمل اصلی بود، پیام خطای مناسبی چاپ شود.
num1 = float(input("عدد اول: "))
num2 = float(input("عدد دوم: "))
op = input("عملگر (+, -, *, /): ").strip()
if op == "+":
print("نتیجه:", num1 + num2)
elif op == "-":
print("نتیجه:", num1 - num2)
elif op == "*":
print("نتیجه:", num1 * num2)
elif op == "/":
if num2 != 0:
print("نتیجه:", num1 / num2)
else:
print("خطا: تقسیم بر صفر امکانپذیر نیست")
else:
print("عملگر نامعتبر است")
برنامه ابتدا دو عدد از کاربر میگیرد و سپس یک عملگر ریاضی (+, -, *, /) دریافت میکند.با استفاده از شرطهای if-elif بررسی میشود که عملگر وارد شده چیست، و عملیات مناسب روی دو عدد انجام میشود.در صورت انتخاب تقسیم (/)، ابتدا بررسی میشود که عدد دوم صفر نباشد تا از خطای ریاضی جلوگیری شود.اگر کاربر عملگری غیر از چهار گزینهٔ مشخصشده وارد کند، پیام «عملگر نامعتبر است» چاپ میشود.این برنامه یک ماشینحساب ساده است که تصمیمگیری را با شرطهای چندحالته پیادهسازی میکند.
تمرین۱۸: تبدیل نام به حروف بزرگ در صورت ورود با حروف کوچک
name = input("نام خود را وارد کنید: ")
if name.islower():
name = name.upper()
print("نام شما:", name)
برنامه ابتدا نامی را از کاربر دریافت میکند و در متغیر name ذخیره میشود.سپس با استفاده از متد islower بررسی میشود که آیا تمام حروف واردشده با حروف کوچک نوشته شدهاند یا نه.اگر این شرط برقرار باشد، یعنی نام کاربر بهطور کامل با حروف کوچک نوشته شده باشد، برنامه آن را با متد upper به حروف بزرگ تبدیل میکند.
در غیر این صورت، تغییری روی نام داده نمیشود. در انتها، نام (در همان حالتی که هست، یا تبدیلشده) چاپ میشود.
نکته:متد name.islower بررسی میکند که آیا تمام کاراکترهای حروفی در رشتهٔ name به صورت حروف کوچک (lowercase) هستند یا نه.اگر تمام حروف الفبایی رشته کوچک باشند (مثلاً ali یا reza123)، این تابع مقدار True برمیگرداند و شرط داخل if اجرا میشود.اگر حتی یکی از حروف بزرگ باشد (مثل Ali یا Reza یا ALi)، مقدار False برمیگردد و بدنهٔ if اجرا نمیشود. این متد فقط روی حروف الفبایی تأثیر دارد و اعداد، فاصله یا نشانهها را نادیده میگیرد.
تمرین۱۹: بررسی وجود عدد در رشته
برنامهای بنویسید که از کاربر یک رشته بگیرد و بررسی کند آیا شامل عدد هست یا نه.
#روش اول
text = input("یک رشته وارد کنید: ")
has_digit = False
for char in text:
if char.isdigit():
has_digit = True
break
if has_digit:
print("رشته شامل عدد است")
else:
print("رشته شامل عدد نیست")
# روش دوم
text = input("یک رشته وارد کنید: ")
if any(char.isdigit() for char in text):
print("رشته شامل عدد است.")
else:
print("رشته شامل عدد نیست.")
روش اول – استفاده از حلقه و شرط:در این روش، ابتدا یک متغیر برای نگهداری وضعیت تعریف میشود (مثلاً آیا عدد پیدا شده یا نه).سپس با یک حلقه، تمام کاراکترهای رشته بررسی میشوند.اگر در طول حلقه حتی یک کاراکتر عدد باشد، مقدار آن متغیر تغییر میکند و با استفاده از دستور break از ادامهٔ حلقه خارج میشویم.در نهایت بر اساس مقدار متغیر تصمیمگیری میشود که آیا رشته شامل عدد بوده یا نه.
روش دوم – استفاده از تابع any:در این روش از تابع آمادهٔ any() استفاده میشود که بررسی میکند آیا حداقل یکی از عناصر یک شرط را برقرار میکند یا نه.با کمک یک حلقهٔ فشرده داخل any، بررسی میشود که آیا در رشته حداقل یک عدد وجود دارد یا خیر.اگر شرط برقرار باشد، پاسخ مثبت دریافت میکنیم؛ در غیر این صورت نتیجه منفی خواهد بود.این روش نسبت به روش اول کد کوتاهتر، حرفهایتر و رایجتر در برنامهنویسی پایتونی است، بهخصوص در پروژههای واقعی.
تمرین ۲۰: محاسبه تخفیف فروشگاه
یک فروشگاه برای مشتریان خود بر اساس مبلغ خرید و نوع عضویت آنها تخفیف در نظر گرفته است. سناریو را اینگونه در نظر بگیرید: اگر مشتری عضو باشگاه فروشگاه باشد و بیش از ۱۰۰۰ واحد خرید کند، ۲۰٪ تخفیف میگیرد. اگر عضو باشد ولی خرید او ۱۰۰۰ واحد یا کمتر باشد، ۱۰٪ تخفیف میگیرد. اگر مشتری عضو نباشد و بیش از ۱۰۰۰ واحد خرید کند، تنها ۵٪ تخفیف شامل او میشود و در غیر این صورت هیچ تخفیفی ندارد. برنامهای بنویسید که با دریافت مبلغ خرید و اینکه مشتری عضو هست یا خیر، مبلغ نهایی قابل پرداخت را محاسبه و چاپ کند.
amount = float(input("مبلغ خرید: "))
member_status = input("آیا عضو باشگاه هستید؟ (بله/خیر): ").strip().lower()
final_amount = amount # مبلغ اولیه
if member_status == "بله":
if amount > 1000:
final_amount = amount * 0.8 # 20% تخفیف
else:
final_amount = amount * 0.9 # 10% تخفیف
else: # عضو نیست
if amount > 1000:
final_amount = amount * 0.95 # 5% تخفیف
# اگر عضو نیست و <=1000 باشد، تخفیفی اعمال نمیشود
print("مبلغ قابل پرداخت:", final_amount)
در این برنامه، ابتدا مبلغ خرید از کاربر گرفته میشود، سپس وضعیت عضویت او در باشگاه دریافت میگردد.
در ادامه، بر اساس اینکه کاربر عضو باشگاه است یا نه و مبلغ خرید چقدر بوده، میزان تخفیف مشخص میشود.اگر کاربر عضو باشگاه باشد و مبلغ خرید بیشتر از ۱۰۰۰ باشد، ۲۰ درصد تخفیف اعمال میشود.اگر عضو باشد ولی مبلغ خریدش ۱۰۰۰ یا کمتر باشد، ۱۰ درصد تخفیف میگیرد.اگر کاربر عضو نباشد و خریدش بالای ۱۰۰۰ باشد، ۵ درصد تخفیف در نظر گرفته میشود.و در صورتی که نه عضو باشد و نه خرید بالای ۱۰۰۰ داشته باشد، هیچ تخفیفی شامل حال او نمیشود.در پایان، مبلغ قابل پرداخت بعد از اعمال تخفیف نمایش داده میشود.
تمرین ۲۱: درستی تشکیل مثلث
سه میله با طولهای مشخص داریم و میخواهیم بدانیم آیا میتوان با این سه میله یک مثلث ساخت یا خیر. قانون تشکیل مثلث: مجموع طول دو میله باید از طول میلهی سوم بیشتر باشد (برای هر سه ترکیب ممکن). برنامهای بنویسید که طول سه میله (سه عدد مثبت) را بگیرد و تعیین کند آیا تشکیل مثلث با این اندازهها ممکن است یا نه. همچنین اگر ممکن بود نوع مثلث را هم مشخص کند که متساویالاضلاع (هر سه ضلع برابر)، متساویالساقین (دو ضلع برابر) یا مختلفالاضلاع (همه اضلاع نابرابر) است.
x = float(input("طول میله اول: "))
y = float(input("طول میله دوم: "))
z = float(input("طول میله سوم: "))
if x + y > z and x + z > y and y + z > x:
# تشکیل مثلث ممکن است
if x == y == z:
print("مثلث متساویالاضلاع است")
elif x == y or x == z or y == z:
print("مثلث متساویالساقین است")
else:
print("مثلث مختلفالاضلاع است")
else:
print("از این میلهها نمیتوان یک مثلث ساخت")
این برنامه بررسی میکند آیا با سه میلهٔ دادهشده میتوان یک مثلث ساخت یا نه، و اگر بتوان، نوع مثلث را مشخص میکند.ابتدا با استفاده از «قاعدهٔ مثلث» بررسی میشود که مجموع طول دو میله از طول میلهٔ سوم بیشتر باشد. اگر این شرط برای هر سه حالت برقرار باشد، تشکیل مثلث ممکن است.در این صورت، سه حالت بررسی میشود:اگر هر سه میله با هم برابر باشند، مثلث متساویالاضلاع است.اگر فقط دو میله برابر باشند، مثلث متساویالساقین است.اگر هیچکدام برابر نباشند، مثلث مختلفالاضلاع است.اگر شرط اولیه برقرار نباشد، یعنی میلهها نمیتوانند یک مثلث تشکیل دهند، پیام مناسب نمایش داده میشود.
تمرین ۲۲: اعداد خاص در بازه
برنامهای بنویسید که تمام اعداد بین 1500 تا 2700 (شامل خود این اعداد) که بر ۷ بخشپذیرند و همچنین مضرب ۵ هستند را پیدا کرده و چاپ کند. خروجی باید به شکل فهرست یا اعداد جداشده با کاما نمایش داده شود.
result = []
for num in range(1500, 2701): # از 1500 تا 2700 شامل هر دو
if num % 7 == 0 and num % 5 == 0:
result.append(str(num))
print(",".join(result)) # چاپ اعداد واجد شرایط با کاما بین آنها
این برنامه همهٔ اعدادی را که بین ۱۵۰۰ تا ۲۷۰۰ (شامل خود دو عدد) قرار دارند بررسی میکند و فقط آنهایی را انتخاب میکند که هم بر ۷ و هم بر ۵ بخشپذیر باشند.در هر دور از حلقه اگر عدد همزمان بر ۷ و ۵ بخشپذیر باشد، به لیست result افزوده میشود (به صورت رشته).پس از پایان حلقه، تمام اعداد جمعشده در لیست با استفاده از تابع join به یک رشته تبدیل میشوند که اعداد را با کاما از هم جدا میکند و چاپ میشود.
تمرین 23: بازی حدس عدد
برنامهای بنویسید که یک عدد صحیح تصادفی بین ۱ تا ۹ در نظر بگیرد و از کاربر بخواهد آن را حدس بزند. اگر حدس کاربر درست نبود، برنامه مجدداً درخواست حدس کند تا زمانی که کاربر عدد درست را وارد کند. در پایان، وقتی حدس صحیح زده شد، پیام «تبریک! درست حدس زدید!» را چاپ کند و بازی تمام شود. (برای تست میتوانید به جای انتخاب تصادفی، عدد ثابتی در نظر بگیرید.)
import random
secret = random.randint(1, 9) # انتخاب عدد مخفی بین 1 تا 9
while True:
guess = int(input("حدس شما (1-9): "))
if guess == secret:
print("تبریک! درست حدس زدید!")
break # حدس درست بود، از حلقه خارج میشویم
else:
print("اشتباه حدس زدید، دوباره تلاش کنید.")
در این برنامه یک عدد تصادفی بین ۱ تا ۹ توسط تابع randint انتخاب میشود و بهعنوان «عدد مخفی» در نظر گرفته میشود.سپس یک حلقهی بینهایت (while True) اجرا میشود تا زمانی که کاربر عدد درست را حدس بزند.اگر عدد واردشده با عدد مخفی برابر باشد، پیام موفقیت چاپ میشود و با دستور break از حلقه خارج میشویم.اگر عدد واردشده نادرست باشد، پیام خطا نمایش داده میشود و کاربر دوباره میتواند تلاش کند.
تمرین 24: حرف صدادار یا بیصدا
فرض کنید برنامهای برای تشخیص نوع حروف الفبای لاتین طراحی کردهاید. این برنامه باید تشخیص دهد که حرف ورودی یک حرف صدادار (مانند A, E, I, O, U) است یا یک حرف بیصدا (سایر حروف). برنامهای بنویسید که یک حرف انگلیسی (تک کاراکتر) را از ورودی بخواند و اعلام کند صدادار است یا بیصدا. اگر ورودی حرف نباشد یا بیش از یک کاراکتر باشد نیز پیغام مناسبی چاپ شود. مثلاً ورودی A باید خروجی «حرف صدادار» و ورودی z خروجی «حرف بیصدا» داشته باشد.
char = input("یک حرف لاتین وارد کنید: ")
if len(char) != 1 or not char.isalpha():
print("لطفاً فقط یک حرف وارد کنید") # ورودی نامعتبر
else:
letter = char.lower() # حرف را به کوچکتر تبدیل میکنیم برای سادگی مقایسه
if letter in ['a', 'e', 'i', 'o', 'u']:
print("حرف صدادار است")
else:
print("حرف بیصدا است")
در این برنامه از کاربر خواسته میشود یک حرف لاتین وارد کند. ابتدا دو شرط بررسی میشود.آیا فقط یک حرف وارد شده (len(char) != 1). آیا ورودی فقط شامل حروف است (not char.isalpha())
اگر هرکدام از این دو شرط برقرار باشد، یعنی ورودی نامعتبر است و پیام مناسب نمایش داده میشود.در غیر این صورت، حرف ورودی به حروف کوچک تبدیل میشود تا مقایسه راحتتر انجام شود.سپس بررسی میشود که آیا این حرف یکی از حروف صدادار انگلیسی (a, e, i, o, u) است یا نه.اگر در لیست حروف صدادار باشد، پیام «حرف صدادار است» چاپ میشود.اگر در لیست نباشد، یعنی بیصداست، پیام «حرف بیصدا است» نمایش داده میشود.این تمرین بهخوبی ترکیب بررسی نوع ورودی، کار با رشتهها، شرطهای تو در تو و لیستها را نشان میدهد.
تمرین 25: بررسی رمز عبور (طول و عدد)
برنامهای طراحی کنید که رمز عبور را چک کند و فقط در صورتی قبول کند که طول آن بیشتر از ۸ باشد و شامل اعداد باشد.
#روش یک
password = input("رمز عبور را وارد کنید: ")
has_digit = False
for char in password:
if char.isdigit():
has_digit = True
break
if len(password) > 8 and has_digit:
print("رمز عبور معتبر است")
else:
print("رمز عبور نامعتبر است")
#روش دوم
password = input("رمز عبور را وارد کنید: ")
if len(password) > 8 and any(char.isdigit() for char in password):
print("رمز عبور معتبر است")
else:
print("رمز عبور نامعتبر است")
روش اول :
در این روش، با استفاده از یک متغیر بولی (has_digit) و حلقه for بررسی میکنیم آیا رمز واردشده حداقل شامل یک رقم هست یا نه.بهمحض یافتن عدد، مقدار has_digit برابر True شده و از حلقه خارج میشویم.در مرحله بعد، دو شرط بررسی میشود.طول رمز باید بیشتر از ۸ کاراکتر باشد.و رمز باید حداقل شامل یک عدد باشد.اگر هر دو شرط برقرار باشد، رمز معتبر در نظر گرفته میشود.
روش دوم :
این برنامه از کاربر یک رمز عبور دریافت میکند و با استفاده از دو شرط بررسی میکند که آیا رمز واردشده معتبر است یا نه.شرط اعتبار شامل دو بخش است.طول رمز باید بیشتر از ۸ کاراکتر باشد (len(password) > 8) و رمز باید حداقل شامل یک رقم باشد (any(char.isdigit() for char in password)).اگر هر دو شرط برقرار باشد، پیام «رمز عبور معتبر است» نمایش داده میشود.
در غیر این صورت، پیام «رمز عبور نامعتبر است» چاپ میشود.این کد مثال خوبی برای ترکیب شرطهای منطقی و بررسی محتوای رشتههاست و کاربردی در اعتبارسنجی سادهی فرمهای ورود دارد.
تمرین ۲۶: وجود حرف بزرگ و عدد در رشته
برنامهای بنویسید که بررسی کند آیا یک رشته هم شامل حروف بزرگ هست و هم عدد باشد.
s = input("لطفاً یک رشته وارد کنید: ")
has_upper = has_digit = False
for c in s:
if c.isupper():
has_upper = True
elif c.isdigit():
has_digit = True
if has_upper and has_digit:
break
if has_upper and has_digit:
print("✅ رشته شامل هم حروف بزرگ و هم عدد است.")
else:
print("❌ رشته شامل یکی یا هر دوی حروف بزرگ و عدد نیست.")
این برنامه یک رشته از کاربر میگیرد و بررسی میکند آیا هم حرف بزرگ (مثل A, B, …) و هم عدد (مثل 1, 2, …) در آن وجود دارد یا نه.دو متغیر بولی (has_upper و has_digit) تعریف میشود که اول مقدارشان False است.سپس با یک حلقه روی تکتک کاراکترهای رشته حرکت میکند:اگر حرف بزرگ پیدا شود، has_upper = True میشود.اگر عدد پیدا شود، has_digit = True میشود.اگر هر دو پیدا شوند، دیگر نیازی به ادامه نیست، پس با break حلقه متوقف میشود.در پایان اگر هر دو شرط برقرار باشند، پیام موفقیت چاپ میشود، وگرنه پیام خطا.
تمرین ۲۷:Palindrome
یک کلمه palindrome (پالیندروم) به واژهای گفته میشود که اگر حروف آن را برعکس کنیم خود کلمه به دست آید (مثل “level” در انگلیسی یا “باب” در فارسی). علی کلمهای دارد و میخواهد بداند آیا از دو سمت یکسان خوانده میشود یا نه. برنامهای بنویسید که یک رشته (کلمه) را از ورودی دریافت کرده و بررسی کند آیا پالیندروم است یا خیر. اگر هست پیام مناسبی چاپ کند و اگر نیست اعلام کند که کلمه از چپ و راست یکسان خوانده نمیشود. به عنوان مثال برای ورودی “radar” باید اعلام شود این کلمه پالیندروم است (چون «رادار» از هر دو سمت یکسان است). (حروف بزرگ/کوچک را نادیده بگیرید و فقط معیار شکل حروف باشد).
word = input("یک کلمه وارد کن: ").lower()
if word == word[::-1]:
print("این کلمه پالیندروم است.")
else:
print("این کلمه از چپ و راست یکسان خوانده نمیشود.")
این برنامه بررسی میکند که آیا کلمهی واردشده از دو طرف یکسان خوانده میشود یا نه.ابتدا کلمهای از کاربر گرفته میشود و با .lower() همه حروف آن به کوچک تبدیل میشوند تا بزرگی یا کوچکی حروف در بررسی تأثیر نداشته باشد.سپس کلمه را با نسخهی برعکسشدهاش (word[::-1]) مقایسه میکنیم:اگر برابر باشند، کلمه پالیندروم است.در غیر این صورت، نیست.در پایان، پیام مناسب برای کاربر نمایش داده میشود.

