هدایت شده از آموزش برنامه نویسی پایتون و 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)
آموزش برنامه نویسی پایتون و AI
🔍 شمارش دقیق حروف با قدرت Generatorها در پایتون در این کد با استفاده از yield، حروف موردنظر بهصورت
برنامهای در زبان پایتون بنویسید که با استفاده از تابع مولد (Generator) تعداد وقوع حرف 'p' را در یک رشته ورودی محاسبه کند.
تابع مولد باید رشته را کاراکتر به کاراکتر پیمایش کند و تنها زمانی که به حرف 'p' رسید، آن را yield کند.
سپس در بخش اصلی برنامه، با تکرار روی خروجی این تابع مولد، تعداد کل حروف 'p' موجود در رشته را شمارش و در خروجی نمایش دهید.