مسابقه برنامهنویسی – تمرین شماره ۲
عنوان: دستهبندی و مرتبسازی اعداد زوج و فرد
سطح سختی: ★★☆☆☆ (مبتدی تا متوسط)
امتیاز: ۱۰ امتیاز
زمان پیشنهادی: ۱۵ دقیقه
صورت سوال
یک برنامه بنویسید که:
1. تعداد N عدد صحیح را از کاربر دریافت کند. (در حالت پایه، N=۵)
2. اعداد را به دو دسته تقسیم کند: زوج و فرد.
3. هر دو دسته را به صورت صعودی مرتب کند.
4. هر دو لیست را با قالب مشخص نمایش دهد.
ورودی
اولین خط: عدد صحیح N که نشاندهنده تعداد اعداد است.
خطوط بعدی: N عدد صحیح، هر کدام در یک خط.
محدودیتها:
1 ≤ N ≤ 100
اعداد صحیح میتوانند منفی، صفر یا مثبت باشند.
خروجی
یک خط برای اعداد زوج با عنوان Even numbers (ascending):
یک خط برای اعداد فرد با عنوان Odd numbers (ascending):
نمونه ورودی و خروجی
ورودی نمونه:
5
7
2
9
4
5
خروجی نمونه:
Even numbers (ascending): [2, 4]
Odd numbers (ascending): [5, 7, 9]
چالش اختیاری (Bonus)
1. برنامه را طوری طراحی کنید که تعداد اعداد توسط کاربر قابل تعیین باشد و نه فقط ۵ عدد.
2. علاوه بر صعودی، لیستها را نزولی هم نمایش دهید.
خروجی نمونه با چالش:
Even numbers (ascending): [2, 4]
Odd numbers (ascending): [5, 7, 9]
Even numbers (descending): [4, 2]
Odd numbers (descending): [9, 7, 5]
بخش امتیاز
دریافت درست ورودیها ۲
دستهبندی صحیح زوج و فرد ۳
مرتبسازی صعودی ۳
چالش اختیاری (نزولی) ۲
هدایت شده از آموزش برنامه نویسی پایتون و AI
مسابقه برنامهنویسی – تمرین شماره ۲
عنوان: دستهبندی و مرتبسازی اعداد زوج و فرد
سطح سختی: ★★☆☆☆ (مبتدی تا متوسط)
امتیاز: ۱۰ امتیاز
زمان پیشنهادی: ۱۵ دقیقه
صورت سوال
یک برنامه بنویسید که:
1. تعداد N عدد صحیح را از کاربر دریافت کند. (در حالت پایه، N=۵)
2. اعداد را به دو دسته تقسیم کند: زوج و فرد.
3. هر دو دسته را به صورت صعودی مرتب کند.
4. هر دو لیست را با قالب مشخص نمایش دهد.
ورودی
اولین خط: عدد صحیح N که نشاندهنده تعداد اعداد است.
خطوط بعدی: N عدد صحیح، هر کدام در یک خط.
محدودیتها:
1 ≤ N ≤ 100
اعداد صحیح میتوانند منفی، صفر یا مثبت باشند.
خروجی
یک خط برای اعداد زوج با عنوان Even numbers (ascending):
یک خط برای اعداد فرد با عنوان Odd numbers (ascending):
نمونه ورودی و خروجی
ورودی نمونه:
5
7
2
9
4
5
خروجی نمونه:
Even numbers (ascending): [2, 4]
Odd numbers (ascending): [5, 7, 9]
چالش اختیاری (Bonus)
1. برنامه را طوری طراحی کنید که تعداد اعداد توسط کاربر قابل تعیین باشد و نه فقط ۵ عدد.
2. علاوه بر صعودی، لیستها را نزولی هم نمایش دهید.
خروجی نمونه با چالش:
Even numbers (ascending): [2, 4]
Odd numbers (ascending): [5, 7, 9]
Even numbers (descending): [4, 2]
Odd numbers (descending): [9, 7, 5]
بخش امتیاز
دریافت درست ورودیها ۲
دستهبندی صحیح زوج و فرد ۳
مرتبسازی صعودی ۳
چالش اختیاری (نزولی) ۲
سوال شماره ۳ – مسابقه برنامهنویسی
عنوان: تقسیم آب به ۵ لوله (Water Distribution)
سطح سختی: ★★★★★ (سخت)
امتیاز: ۱۵ امتیاز
زمان پیشنهادی: ۲۰–۳۰ دقیقه
صورت سوال
یک برنامه بنویسید که:
1. یک عدد صحیح مثبت X را از کاربر دریافت کند که نشاندهنده حجم یک لوله بزرگ است.
2. برنامه باید این حجم را به ۵ قسمت تقسیم کند به گونهای که مجموع ۵ قسمت برابر با X باشد.
3. هر قسمت باید عدد صحیح باشد و تقسیم تا حد امکان عادلانه و نزدیک به هم باشد.
4. برنامه باید ۵ عدد تقسیم شده را در یک لیست یا خروجی جداگانه نمایش دهد.
5. برنامه باید برای هر ورودی صحیح مثبت کار کند.
> ⚠️ نکته چالش: تقسیم دقیق اعداد صحیح ممکن است به باقیمانده (remainder) نیاز داشته باشد تا مجموع دقیق X حفظ شود.
ورودی
یک عدد صحیح مثبت X که حجم لوله بزرگ را نشان میدهد.
محدودیتها:
1 ≤ X ≤ 10^6
خروجی
۵ عدد صحیح مثبت که مجموعشان برابر X باشد.
اعداد باید تقریباً برابر و متعادل باشند (اختلاف بین بزرگترین و کوچکترین عدد ≤ 1).
نمونه ورودی و خروجی
ورودی نمونه:
23
خروجی نمونه (یکی از پاسخهای ممکن):
[5, 5, 5, 4, 4]
ورودی نمونه:
10
خروجی نمونه:
[2, 2, 2, 2, 2]
ورودی نمونه:
7
خروجی نمونه:
[2, 2, 1, 1, 1]
> نکته: ترتیب اعداد در خروجی مهم نیست، اما مجموع باید دقیقاً برابر با X باشد و اختلاف بین بزرگترین و کوچکترین عدد ≤ 1 باشد.
چالش اختیاری (Bonus)
برنامه را طوری طراحی کنید که تعداد بخشها قابل تغییر باشد، نه فقط ۵.
برنامه بتواند ورودیهای خیلی بزرگ (تا 10^9) را نیز بهینه و سریع تقسیم کند.
امتیازدهی پیشنهادی
بخش امتیاز
تقسیم صحیح اعداد ۵
حفظ مجموع برابر X ۵
تقریباً مساوی بودن بخشها ۵
۳۰ ترفند عجیب و جادویی پایتون
۱. چند مقدار را همزمان به چند متغیر اختصاص دهید
a, b, c = 1, 2, 3
print(a, b, c) # خروجی: 1 2 3
---
۲. تعویض مقادیر بدون متغیر موقت
x, y = 5, 10
x, y = y, x
print(x, y) # خروجی: 10 5
---
۳. لیست کامپرهنشن با شرط
nums = [i**2 for i in range(10) if i % 2 == 0]
print(nums) # خروجی: [0, 4, 16, 36, 64]
---
۴. رشتهها مثل لیست رفتار میکنند
s = "Python"
print(s[::-1]) # خروجی: "nohtyP"
---
۵. استفاده از _ در REPL
>>> 10 + 5
15
>>> _ * 2
30
---
۶. چند دستور در یک خط
a = 5; b = 10; print(a+b) # خروجی: 15
---
۷. else بعد از حلقه
for i in range(3):
print(i)
else:
print("حلقه تمام شد")
---
۸. لیستها و رشتهها با + و *
print([1,2]*2) # [1, 2, 1, 2]
print("Hi "*3) # "Hi Hi Hi "
---
۹. تابع zip برای ترکیب لیستها
a = [1,2,3]; b = ['a','b','c']
print(list(zip(a,b))) # [(1,'a'), (2,'b'), (3,'c')]
---
۱۰. لیست از رشتهها با split
s = "Python is fun"
words = s.split()
print(words) # ['Python', 'is', 'fun']
---
۱۱. معکوس کردن لیست با [::-1]
lst = [1,2,3,4]
print(lst[::-1]) # [4,3,2,1]
---
۱۲. حذف عناصر با del
lst = [1,2,3]
del lst[1]
print(lst) # [1,3]
---
۱۳. مقایسه چند مقدار همزمان
x = 5
if 0 < x < 10:
print("بین ۰ و ۱۰ است")
---
۱۴. استفاده از enumerate
lst = ['a','b','c']
for i, v in enumerate(lst):
print(i, v)
---
۱۵. چاپ چند خط با یک دستور
print("""سلام
دنیا
پایتون""")
---
۱۶. چک کردن نوع داده
x = 5
print(type(x)) # <class 'int'>
---
۱۷. تبدیل لیست به رشته با join
words = ['Python','Rocks']
print(' '.join(words)) # "Python Rocks"
---
۱۸. استفاده از any و all
nums = [0,1,2]
print(any(nums)) # True
print(all(nums)) # False
---
۱۹. لیست چند بعدی
matrix = [[1,2],[3,4]]
print(matrix[1][0]) # 3
---
۲۰. set برای حذف تکراریها
nums = [1,2,2,3,3]
print(list(set(nums))) # [1,2,3]
---
۲۱. تبدیل رشته به عدد با int و float
s = "123.45"
print(int(float(s))) # 123
---
۲۲. تابع sorted بدون تغییر لیست اصلی
lst = [3,1,2]
print(sorted(lst)) # [1,2,3]
print(lst) # [3,1,2]
---
۲۳. شرط داخل لیست کامپرهنشن
nums = [i if i%2==0 else 0 for i in range(5)]
print(nums) # [0,0,2,0,4]
---
۲۴. استفاده از * برای unpack کردن لیست
a, *b, c = [1,2,3,4]
print(a,b,c) # 1 [2,3] 4
---
۲۵. مقایسه رشتهها بدون توجه به حروف بزرگ و کوچک
s1 = "Python"; s2 = "python"
print(s1.lower() == s2.lower()) # True
---
۲۶. استفاده از Counter برای شمارش عناصر
from collections import Counter
nums = [1,2,2,3,3,3]
print(Counter(nums)) # Counter({3:3, 2:2, 1:1})
---
۲۷. تبدیل لیست به دیکشنری با zip
keys = ['a','b']; values = [1,2]
d = dict(zip(keys, values))
print(d) # {'a':1, 'b':2}
---
۲۸. چند شرط در یک خط
x = 5
print("بین ۰ و ۱۰" if 0<x<10 else "خارج از محدوده")
---
۲۹. استفاده از defaultdict
from collections import defaultdict
d = defaultdict(int)
d['a'] += 1
print(d['a'], d['b']) # 1 0
---
۳۰. تابع map برای اعمال عملیات روی لیست
nums = [1,2,3]
squared = list(map(lambda x: x**2, nums))
print(squared) # [1,4,9]
---
✅ این ۳۰ ترفند شامل:
عملیات روی لیست و رشته
توابع داخلی و کتابخانههای استاندارد
روشهای کوتاه و حرفهای
کاربرد برای مسابقه و حل سریع مسئله
هدایت شده از یاسر محمودیان
اطلاعیه برگزاری کلاس
📅 تاریخ: امروز، چهارشنبه ۵ آذرماه
👭 کلاس خواهران: ساعت ۱۴تا ۱۶
💻 موضوع: دوره مقدماتی آموزش برنامهنویسی پایتون
📢 اطلاعیه برگزاری کلاس
برنامهنویسی پایتون – سطح مقدماتی
به اطلاع علاقهمندان میرسد که کلاس پایتون مقدماتی برگزار میگردد.
⏰ زمان برگزاری:
کلاس خواهران:
ساعت ۹:۰۰ تا ۱۱:۳۰
کلاس برادران:
ساعت ۱۵:۰۰ تا ۱۷:۳۰
با توجه به اینکه این جلسه، آخرین کلاس دوره مقدماتی میباشد، حضور کلیه دوستان گرامی ضروری است.
لطفاً در ساعت مقرر در کلاس حاضر باشید.
امروز کلاس برنامهنویسی پایتون – ویژه خواهران برگزار شد.
بدینوسیله از همراهی و تلاشهای ارزنده دوستان فعال در کلاس، سرکار خانم نفری فاروجی و سرکار خانم شجاع صمیمانه تقدیر و تشکر میشود.
امیدواریم همواره در مسیر یادگیری و موفقیتهای آینده، پویا، پرتلاش و سربلند باشید.
📢 اطلاعیه آموزشی
به اطلاع عزیزان شرکتکننده در دوره برنامهنویسی پایتون میرسد که فردا اولین مدل یادگیری ماشین (Machine Learning) با استفاده از یک مثال کاملاً کاربردی و مؤثر در کلاس رونمایی و بررسی خواهد شد.
در این جلسه، یک نمونه واقعی شامل بارگذاری مدل، آموزش، ذخیرهسازی و انجام پیشبینی با استفاده از کتابخانههای pickle، NumPy و Scikit-Learn ارائه خواهد شد تا هنرجویان با روند ساخت یک مدل ساده یادگیری ماشین بهصورت عملی آشنا شوند.
حضور بهموقع و فعال شما موجب بهرهبرداری بهتر از مباحث عملی این جلسه خواهد بود.
✨ پایان دوره مقدماتی پایتون و اجرای پروژه عملی! ✨
به لطف خدا امروز دوره مقدماتی آموزش برنامهنویسی پایتون ویژه بانوان و آقایان با موفقیت به پایان رسید. 🎉
در این جلسه، پروژه عملی تشخیص چهره با پایتون و OpenCV را اجرا کردیم و نتیجه کار بچهها فوقالعاده بود!
همه هنرجویان با شور و هیجان، چهرهها را روی صفحه دیدند و تجربه عملی ارزشمندی از محیط برنامهنویسی پایتون کسب کردند.
این پروژه فرصتی بود برای تمرین، یادگیری و علاقهمندی بیشتر به کدنویسی و تکنولوژی، و مشاهده شادی و انرژی بچهها، انگیزه ما را برای ادامه آموزش دوچندان کرد. 💻❤️
به امید موفقیت روزافزون همه هنرجویان عزیز و آغاز دوره پیشرفته پایتون که به زودی تاریخ دقیق آن اعلام خواهد شد… 🚀
#محمودیان #پایتون #دوره #نوابغ_کدنویسی #تشخیص_چهره #کدنویسی #OpenCV #آموزش_پایتون #یادگیری_ماشین #هنرجویان
هدایت شده از آموزش برنامه نویسی پایتون و AI
نفرات دوره ویژه «پایتون کاربردی – مدیریت و پردازش فایلها» ثبتنام کردهاند.
لطفاً برای تکمیل ثبتنام اولیه، مشخصات زیر را بهصورت کامل ارسال کنید:
نام و نام خانوادگی
تاریخ تولد کامل (روز / ماه / سال)
کد ملی
لیست نفرات ثبتنامی
آقایان:
۱. محمدحسین محسنآبادی
۲. طاها برید کاظمی
خانمها:
۱.خانم قلمی
لیست در حال بروزرسانی…
49.3M حجم رسانه بالاست
مشاهده در ایتا
🔍 شمارش دقیق حروف با قدرت Generatorها در پایتون
در این کد با استفاده از yield، حروف موردنظر بهصورت مرحلهبهمرحله و بدون مصرف اضافی حافظه تولید میشوند.
تابع مولد فقط وقتی حرف 'p' را پیدا میکند، همان لحظه آن را بازمیگرداند—نتیجه؟
⚡ اجرای سبک، بهینه و کاملاً پایتونی.
کد کامل:
def printresult(String):
for i in String:
if i == "p":
yield i # yield هر بار فقط مقدار موردنظر را برمیگرداند
String = "python"
a = 0
for j in printresult(String):
a += 1
print("The number of 'p' in word is:", a)