تابع بدون return چه فرقی داره؟ 🤔
تا حالا دیدیم که تابعها میتونن با return یه خروجی بهمون بدن. اما بعضی وقتا تابع فقط یه کار انجام میده (مثل چاپ یه پیغام) و چیزی برنمیگردونه. بیاید ببینیم اینا چطور کار میکنن!
✨ مثال:
def cheer_up():
print("You're unstoppable, keep coding! :D") # Print a cheer message
cheer_up()
print(cheer_up()) # Try to print what the function returns
🔹 خروجی:
You're unstoppable, keep coding! :D
You're unstoppable, keep coding! :D
None
🔰 این کد چیکار میکنه؟
تابع cheer_up یه پیغام انگیزشی چاپ میکنه و return نداره.
وقتی تابع رو صدا میکنیم، پیغام چاپ میشه.
اما اگه بخوایم نتیجه تابع رو چاپ کنیم (print(cheer_up()))، چون چیزی برنمیگردونه، پایتون None چاپ میکنه.
✅ کی از تابع بدون return استفاده کنیم؟
- وقتی فقط میخوای یه کار انجام بشه، مثل چاپ پیغام، ذخیره تو فایل، یا نمایش یه گرافیک.
- اگه نیازی به ذخیره خروجی تابع نداری، return لازم نیست.
💢 مقایسه:
def add_with_return(a, b):
return a + b # Return the sum
def add_without_return(a, b):
print(a + b) # Just print the sum
result1 = add_with_return(3, 4)
result2 = add_without_return(3, 4)
print(f"With return: {result1}") # Print stored result
print(f"Without return: {result2}") # Print what the function returns
🔹 خروجی:
7
With return: 7
Without return: None
💥 نکتههای کلیدی:
- تابع با return یه خروجی بهت میده که میتونی ذخیره کنی یا باهاش کار کنی.
- تابع بدون return فقط کارشو انجام میده و None برمیگردونه.
- اگه بخوای خروجی تابع رو تو محاسبات دیگه استفاده کنی، حتماً باید return داشته باشه.
✨ مثال روزمره: فرض کن داری یه برنامه برای مدیریت تکالیف میسازی. یه تابع مینویسی که یه پیغام یادآوری (مثل "Homework due tomorrow!") چاپ کنه. چون فقط میخوای پیغام رو نشون بده، نیازی به return نداره.
❓ تمرین: یه تابع بنویسید که یه پیغام انگیزشی چاپ کنه (مثلاً "You're a coding rockstar!") و چیزی برنگردونه. تابع رو صدا کنید و نتیجهش رو چاپ کنید تا ببینید None میگیرید.
💯 @PythonForYou 🧑💻👩💻
تابع با چند پارامتر چطوره؟ 🎉
تا حالا تابعهایی با یک یا دو پارامتر دیدیم. اما تابعها میتونن کلی پارامتر بگیرن! مثلاً میتونی یه تابع بسازی که اطلاعات یه نفر (مثل اسم، سن، شهر) رو بگیره و یه پیغام مرتب چاپ کنه.
✨ مثال:
def print_info(name, age, city):
print(f"Name: {name}, Age: {age}, City: {city}") # Print user info
print_info("Ali", 18, "Tehran")
print_info("Sara", 20, "Shiraz")
🔹 خروجی:
Name: Ali, Age: 18, City: Tehran
Name: Sara, Age: 20, City: Shiraz
🔰 این کد چیکار میکنه؟
تابع print_info سه پارامتر میگیره: name (رشته)، age (عدد)، و city (رشته).
هر بار که تابع رو صدا میکنی، اطلاعات مختلف میدی و تابع یه پیغام قشنگ چاپ میکنه.
پارامترها میتونن نوعهای مختلف داشته باشن، فقط باید ترتیبشون موقع صدا کردن درست باشه.
📌 نکتههای مهم:
- ترتیب پارامترها خیلی مهمه! اگه ترتیب رو اشتباه کنی، خروجی بههمریخته میشه.
- اسم پارامترها رو معنادار انتخاب کن تا کدت خوانا باشه.
✨ مثال اشتباه:
print_info(18, "Ali", "Tehran") # Wrong order!
خروجی:
Name: 18, Age: Ali, City: Tehran
✨ مثال درست با نامگذاری پارامترها: میتونی موقع صدا کردن تابع، اسم پارامترها رو مشخص کنی تا ترتیب مهم نباشه:
print_info(age=18, name="Ali", city="Tehran") # Works fine!
✨ مثال روزمره: فرض کن داری یه اپلیکیشن برای ثبتنام تو یه دوره برنامهنویسی میسازی. یه تابع مینویسی که اطلاعات دانشجو (اسم، سن، شهر، زبان مورد علاقه) رو بگیره و نشون بده.
❓ تمرین: یه تابع بنویسید که چهار پارامتر بگیره: اسم، سن، شهر، و غذای مورد علاقه. تابع باید یه پیغام قشنگ چاپ کنه (مثلاً "Ali, 18, from Tehran, loves pizza!"). تابع رو با دو مجموعه اطلاعات مختلف صدا کنید.
💯 @PythonForYou 🧑💻👩💻
پارامترهای پیشفرض تو تابعها چیه؟ 🎛
یه ویژگی خفن تو تابعها اینه که میتونی برای پارامترهاشون مقدار پیشferض بذاری. یعنی اگه موقع صدا کردن تابع، به اون پارامتر چیزی ندی، تابع از مقدار پیشفرض استفاده میکنه. مثل وقتی تو یه دستگاه قهوهساز، شکر رو بهصورت پیشفرض روی "متوسط" تنظیم میکنی! ☕️
✨ مثال:
def greet(name="Guest"):
print(f"Hello {name}, welcome to Python!") # Print a greeting
greet("Ali") # Use provided name
greet() # Use default name
🔹 خروجی:
Hello Ali, welcome to Python!
Hello Guest, welcome to Python!
🔰 این کد چیکار میکنه؟
تابع greet یه پارامتر name داره که مقدار پیشفرضش "Guest"ه.
اگه موقع صدا کردن تابع، اسمی بدی (مثل "Ali")، از همون استفاده میکنه.
اگه چیزی ندی، از مقدار پیشفرض ("Guest") استفاده میکنه.
✅ چرا پارامتر پیشفرض باحاله؟
- باعث میشه تابع انعطافپذیرتر باشه.
- اگه بعضی پارامترها معمولاً یه مقدار ثابت دارن، لازم نیست هر بار بنویسیشون.
✨ یه مثال واقعی: فرض کن داری یه برنامه برای رزرو رستوران میسازی. یه تابع مینویسی که تعداد نفرات رو بگیره، ولی اگه کسی تعداد نگفت، بهصورت پیشفرض برای 2 نفر رزرو کنه:
def book_table(name, people=2):
print(f"Table for {people} reserved for {name}") # Print reservation info
book_table("Sara", 4)
book_table("Ali")
🔹 خروجی:
Table for 4 reserved for Sara
Table for 2 reserved for Ali
📌 نکتههای مهم:
- پارامترهای پیشفرض باید بعد از پارامترهای بدون پیشفرض تعریف بشن. مثلاً این اشتباهه:
def wrong_func(name="Guest", age): # SyntaxError!
print(name, age)
- میتونی چند پارامتر پیشفرض داشته باشی، ولی ترتیب مهمه.
❓ تمرین: یه تابع بنویسید که دو پارامتر بگیره: اسم و پیام خوشامدگویی. پیام پیشفرض باشه "Welcome to coding!". تابع رو یه بار با اسم و پیام دلخواه، و یه بار فقط با اسم صدا کنید.
💯 @PythonForYou 🧑💻👩💻
تابع با تعداد پارامترهای متغیر (args) 🌟
یه وقتایی نمیدونی چند تا ورودی قراره به تابع بدی. اینجا *args به دادت میرسه! این یه ویژگی خفنه که به تابع اجازه میده تعداد متغیر ورودی بگیره. مثل وقتی یه سبد میوه داری و میتونی هر چند تا میوه که بخوای بندازی توش! 🍎🍊🍇
✨ مثال:
def sum_numbers(*args):
total = 0
for num in args:
total += num
return total # Return the sum of all numbers
print(sum_numbers(1, 2, 3)) # Sum of 3 numbers
print(sum_numbers(1, 2, 3, 4, 5)) # Sum of 5 numbers
🔹 خروجی:
6
15
🔰 این کد چیکار میکنه؟
- این *args به تابع اجازه میده هر تعداد ورودی رو بهصورت یه لیست بگیره.
- تابع sum_numbers همه اعداد ورودی رو جمع میکنه و نتیجه رو برمیگردونه.
- میتونی 3 تا عدد، 5 تا عدد، یا حتی هیچی بهش بدی!
✨ یه مثال باحالتر: فرض کن داری یه برنامه برای محاسبه میانگین نمرات میسازی:
def average_scores(*scores):
if not scores: # Check if no scores provided
return 0
total = sum(scores)
count = len(scores)
return total / count # Return the average
print(average_scores(10, 15, 20)) # Average of 3 scores
print(average_scores(5, 10, 15, 20, 25)) # Average of 5 scores
🔹 خروجی:
15.0
15.0
📌 نکتههای کلیدی:
- در واقع *args یه لیست از ورودیهاست که میتونی باهاش مثل لیست کار کنی (مثل حلقه زدن).
- اگه هیچ ورودی ندی، *args یه لیست خالیه.
- میتونی *args رو با پارامترهای معمولی ترکیب کنی، ولی *args باید آخر تعریف بشه.
✨ مثال ترکیبی:
def print_scores(student, *scores):
print(f"{student}'s scores: {scores}") # Print student and their scores
return average_scores(*scores) # Return average using previous function
print(print_scores("Ali", 10, 15, 20))
🔹
✨ خروجی:
Ali's scores: (10, 15, 20)
15.0
مثال روزمره: فکر کن داری یه اپلیکیشن برای مدیریت خرید میسازی. یه تابع مینویسی که قیمت آیتمهای خرید رو بگیره و جمعشون رو حساب کنه، مهم نیست چند تا آیتم باشه!
❓ تمرین: یه تابع بنویسید که تعداد متغیر عدد بگیره و بزرگترین عدد رو برگردونه. تابع رو با چند مجموعه ورودی مختلف تست کنید (مثلاً 3 عدد، 5 عدد).
💯 @PythonForYou 🧑💻👩💻
تابعهای تو در تو (Nested Functions) 🔄
یه ویژگی باحال تو پایتون اینه که میتونی تابعها رو تو دل همدیگه بذاری! مثل عروسکهای ماتریوشکا که یه عروسک تو عروسک دیگهست. 🪆 به این میگن تابعهای تو در تو.
✨ مثال:
def outer_function():
def inner_function():
print("I'm inside the outer function!") # Print from inner function
inner_function() # Call inner function
outer_function()
🔹 خروجی:
I'm inside the outer function!
🔰 این کد چیکار میکنه؟
تابع outer_function یه تابع داخلی به اسم inner_function داره.
تابع داخلی فقط داخل تابع خارجی کار میکنه و نمیتونی مستقیم صداش کنی.
وقتی outer_function رو صدا میکنی، اون تابع داخلی رو اجرا میکنه.
✅ چرا از تابع تو در تو استفاده کنیم؟
- سازماندهی بهتر: میتونی کدهای مرتبط رو توی یه تابع بزرگتر گروهبندی کنی.
- محافظت از کد: تابع داخلی فقط تو تابع خارجی قابلاستفادهست، پس از بیرون نمیتونن بهش دسترسی پیدا کنن.
- کارهای پیچیده: برای کارهایی که نیاز به چند مرحله دارن، تابعهای داخلی میتونن کمک کنن.
✨ یه مثال واقعی: فرض کن داری یه برنامه برای محاسبه مالیات میسازی. یه تابع خارجی داری که مالیات کل رو حساب میکنه، و یه تابع داخلی که یه بخش خاص (مثلاً مالیات پایه) رو محاسبه میکنه:
def calculate_tax(income):
def base_tax():
return income * 0.1 # Calculate 10% base tax
total_tax = base_tax() + 100 # Add fixed amount
return total_tax # Return final tax
print(calculate_tax(1000)) # Calculate tax for 1000
🔹 خروجی:
200.0
📌نکته: تابع داخلی میتونه به متغیرهای تابع خارجی دسترسی داشته باشه (مثل income تو مثال بالا).
❓ تمرین: یه تابع خارجی بنویسید که یه عدد بگیره و یه تابع داخلی داشته باشه که مربع اون عدد رو چاپ کنه. تابع خارجی باید مکعب عدد رو برگردونه. تابع رو با دو عدد مختلف تست کنید.
💯 @PythonForYou 🧑💻👩💻
دامنه متغیرها تو تابعها (Scope) 🔍
امروز قراره درباره یه موضوع مهم حرف بزنیم: دامنه متغیرها یا Scope. این یعنی متغیرها تو کدت کجا کار میکنن و کجا نمیکنن. مثل اینه که بدونی کلید خونهت فقط در خونه خودتو باز میکنه! 🔑
🟢 تو پایتون، دو نوع دامنه اصلی داریم:
🔹 Local Scope:
🔹 متغیرهایی که داخل تابع تعریف میشن، فقط همونجا کار میکنن.
🔸 Global Scope:
🔸 متغیرهایی که بیرون تابع تعریف میشن، همهجا (خارج و داخل تابعها) قابلاستفادهان، مگه اینکه یه متغیر محلی همنام باشه.
✨ مثال:
x = 10 # Global variable
def my_function():
x = 5 # Local variable
print(f"Inside function: {x}") # Print local x
my_function()
print(f"Outside function: {x}") # Print global x
🔹 خروجی:
Inside function: 5
Outside function: 10
🔰 این کد چیکار میکنه؟
متغیر x جهانی (10) بیرون تابع تعریف شده.
متغیر x محلی (5) داخل تابع تعریف شده و فقط همونجا کار میکنه.
وقتی تابع چاپ میکنه، از x محلی استفاده میشه.
بیرون تابع، x جهانی چاپ میشه.
✅ نکته مهم: اگه داخل تابع بخوای به متغیر جهانی دسترسی پیدا کنی و تغییرش بدی، باید از کلمه global استفاده کنی:
x = 10 # Global variable
def change_global():
global x
x = 20 # Modify global x
print(f"Inside function: {x}") # Print modified x
change_global()
print(f"Outside function: {x}") # Print global x
🔹 خروجی:
Inside function: 20
Outside function: 20
✨ مثال روزمره: فرض کن داری یه بازی میسازی. یه متغیر جهانی داری که امتیاز کل بازیکن رو نگه میداره. تو تابعهای مختلف (مثل تابع پایان مرحله) میتونی امتیاز رو تغییر بدی، ولی متغیرهای محلی (مثل تعداد دشمنهای کشتهشده تو یه مرحله) فقط تو همون تابع کار میکنن.
❓ تمرین: یه تابع بنویسید که یه متغیر محلی و یه متغیر جهانی رو چاپ کنه. متغیر جهانی رو با global تغییر بدید.
💯 @PythonForYou 🧑💻👩💻
تابع برای بررسی عدد اول (Prime Number) 🔢
بیاید یه تابع بنویسیم که یه کار ریاضی باحال انجام بده: بررسی کنه که یه عدد اوله یا نه. عدد اول یعنی فقط بر 1 و خودش تقسیم بشه (مثل 2، 3، 5، 7).
✨ مثال:
def is_prime(n):
if n < 2:
return False # Numbers less than 2 are not prime
for i in range(2, n):
if n % i == 0:
return False # If divisible by any number, not prime
return True # If no divisors found, it's prime
print(is_prime(7)) # Check if 7 is prime
print(is_prime(4)) # Check if 4 is prime
🔹 خروجی:
True
False
🔰 این کد چیکار میکنه؟
تابع is_prime یه عدد n میگیره.
اگه n کمتر از 2 باشه، اول نیست (False).
با حلقه چک میکنه که آیا n بر عددی بین 2 تا n-1 تقسیم میشه یا نه.
اگه تقسیم بشه، اول نیست (False). اگه نه، اوله (True).
✅ چرا این تابع باحاله؟
- میتونی تو پروژههای ریاضی، رمزنگاری، یا حتی بازیها ازش استفاده کنی.
- کدت تمیز و قابلاستفاده دوبارهست.
✨ مثال روزمره: فرض کن داری یه برنامه برای امتحان ریاضی میسازی که چک کنه کدوم جوابها عدد اولن. این تابع بهت کمک میکنه سریع این کارو انجام بدی!
❓ تمرین: یه تابع بنویسید که چک کنه یه عدد زوجه یا نه. تابع رو با چند عدد مختلف تست کنید (مثلاً 4، 7، 10).
💯 @PythonForYou 🧑💻👩💻
تابع برای عدد کامل (Perfect Number) 🎯
بیاید یه تابع باحال دیگه بنویسیم: تابع برای بررسی عدد کامل. عدد کامل یعنی مجموع مقسومعلیههاش (بهجز خودش) برابر خود عدد باشه. مثلاً 6 (چون 1+2+3=6) یا 28 (چون 1+2+4+7+14=28).
✨ مثال:
def is_perfect(n):
sum_divisors = 0
for i in range(1, n):
if n % i == 0:
sum_divisors += i # Add divisor to sum
return sum_divisors == n # Check if sum equals the number
print(is_perfect(6)) # Check if 6 is perfect
print(is_perfect(28)) # Check if 28 is perfect
print(is_perfect(10)) # Check if 10 is perfect
🔹 خروجی:
True
True
False
🔰 این کد چیکار میکنه؟
تابع is_perfect یه عدد n میگیره.
با حلقه، تمام مقسومعلیههای n (از 1 تا n-1) رو جمع میکنه.
اگه جمع برابر n باشه، عدد کامله (True). اگه نه، خیر (False).
💥 چرا این تابع مهمه؟
- اعداد کامل تو ریاضیات خیلی خاصن و تو مسائل نظریه اعداد کاربرد دارن.
- این تابع نشون میده چطور میتونی یه مسئله ریاضی رو با کد حل کنی.
✨ مثال روزمره: فرض کن داری یه اپلیکیشن آموزشی میسازی که به دانشآموزا کمک کنه اعداد خاص (مثل اعداد کامل) رو پیدا کنن. این تابع میتونه بخشی از برنامهت باشه!
❓ تمرین: یه تابع بنویسید که یه عدد بگیره و مجموع مقسومعلیههاش رو چاپ کنه (بدون خود عدد). تابع رو با چند عدد تست کنید.
💯 @PythonForYou 🧑💻👩💻
تابع با ورودی از کاربر ⌨️
تا حالا تابعهایی ساختیم که خودمون ورودی بهشون میدادیم. حالا بیاید یه تابع بنویسیم که از کاربر ورودی بگیره! اینجوری برنامهمون تعاملیتر میشه.
✨ مثال:
def add_user_numbers():
num1 = int(input("Enter first number: ")) # Get first number
num2 = int(input("Enter second number: ")) # Get second number
return num1 + num2 # Return their sum
result = add_user_numbers()
print(f"Sum: {result}") # Print the result
🔹 خروجی (مثال):
Enter first number: 5
Enter second number: 3
Sum: 8
🔰 این کد چیکار میکنه؟
تابع add_user_numbers از کاربر دو عدد میگیره با input.
عددها رو جمع میکنه و نتیجه رو برمیگردونه.
نتیجه تو متغیر result ذخیره میشه و چاپ میشه.
💥 نکتههای مهم:
- میدونیم که input همیشه رشته برمیگردونه، پس برای اعداد باید از ()int استفاده کنی.
- اگه کاربر ورودی نامعتبر (مثل حروف) بده، ممکنه خطا بگیری. بعداً یاد میگیریم چطور خطاها رو مدیریت کنیم!
✨ مثال روزمره: فرض کن داری یه ماشینحساب آنلاین میسازی. یه تابع مینویسی که از کاربر اعداد و عملیات رو بگیره و نتیجه رو نشون بده.
❓ تمرین: یه تابع بنویسید که از کاربر دو عدد بگیره و ضربشون رو برگردونه.
💯 @PythonForYou 🧑💻👩💻
مدیریت خطاها تو تابعها 🚨
یه وقتایی تابعهامون ممکنه خطا بدن، مثلاً اگه کاربر ورودی اشتباه بده (مثل تقسیم بر صفر). بیاید یاد بگیریم چطور تابعهامون رو امن کنیم!
✨ مثال:
def safe_divide(a, b):
if b == 0:
print("Cannot divide by zero!") # Handle division by zero
return None
return a / b # Return the division result
print(safe_divide(10, 2)) # Normal division
print(safe_divide(10, 0)) # Division by zero
🔹 خروجی:
5.0
Cannot divide by zero!
None
🔰 این کد چیکار میکنه؟
تابع safe_divide دو عدد a و b میگیره.
قبل از تقسیم، چک میکنه که b صفر نباشه.
اگه صفر باشه، پیغام خطا چاپ میکنه و None برمیگردونه.
اگه مشکلی نباشه، نتیجه تقسیم رو برمیگردونه.
✅ چرا مدیریت خطا مهمه؟
- باعث میشه برنامهت کرش نکنه و کاربر تجربه بهتری داشته باشه.
- میتونی به کاربر بگی چی اشتباه شده و چطور درستش کنه.
✨ یه مثال پیشرفتهتر:
def safe_divide_advanced(a, b):
try:
result = a / b
return result # Return division result
except ZeroDivisionError:
print("Error: Division by zero is not allowed!") # Handle error
return None
print(safe_divide_advanced(10, 2))
print(safe_divide_advanced(10, 0))
🔹 خروجی:
5.0
Error: Division by zero is not allowed!
None
✨ مثال روزمره: فرض کن داری یه اپلیکیشن مالی میسازی. یه تابع مینویسی که سود سرمایهگذاری رو حساب کنه، ولی باید چک کنی که ورودیها معتبر باشن (مثلاً عدد منفی نباشن).
❓ تمرین: یه تابع بنویسید که دو عدد بگیره و جمعشون رو برگردونه، ولی اگه هر کدوم از ورودیها منفی بود، پیغام خطا چاپ کنه و None برگردونه. تابع رو با چند ورودی تست کنید.
💯 @PythonForYou 🧑💻👩💻
تابعهای لامبدا (Lambda Functions) 🕶
تا حالا تابعهای معمولی رو دیدیم، حالا بیاید یه نوع تابع باحالتر ببینیم: تابعهای لامبدا! اینا تابعهای کوچیک و یکخطیان که نیازی به اسم ندارن. مثل یه میانبر تو کد!
✨ مثال:
square = lambda x: x * x # Define a lambda function
print(square(5)) # Call the lambda function
🔹 خروجی:
25
🔰 این کد چیکار میکنه؟
تابع لامبدا یه عدد x میگیره و مربعش رو برمیگردونه.
بهش اسم square دادیم، ولی میتونستیم مستقیم ازش استفاده کنیم.
ساختار لامبدا اینجوریه: lambda arguments: expression
✨ یه مثال باحالتر:
add = lambda a, b: a + b # Lambda with two arguments
print(add(3, 4)) # Call with two numbers
🔹 خروجی:
7
🔰 چرا لامبدا باحاله؟
- برای کارهای ساده و سریع که نیازی به تابع کامل ندارن.
- تو جاهایی که نیاز به تابع یهبارمصرف داری (مثل تو لیستها یا توابع مرتبسازی).
✨ مثال واقعی: فرض کن داری یه برنامه برای فیلتر کردن دادهها میسازی. میتونی از لامبدا برای تعریف سریع یه شرط استفاده کنی:
numbers = [1, 2, 3, 4, 5]
evens = list(filter(lambda x: x % 2 == 0, numbers)) # Filter even numbers
print(evens) # Print even numbers
🔹 خروجی:
[2, 4]
❓ تمرین: یه تابع لامبدا بنویسید که دو عدد بگیره و تفریقشون رو برگردونه. بعد یه تابع لامبدا برای بررسی زوج بودن عدد بنویسید.
💯 @PythonForYou 🧑💻👩💻
تابع و حلقهها 🔄
تابعها با حلقهها خیلی خوب کار میکنن و میتونن کارهای تکراری رو سادهتر کنن. بیاید یه تابع بنویسیم که از حلقه استفاده کنه!
✨ مثال:
def print_squares(n):
for i in range(1, n + 1):
print(i * i) # Print square of each number
print_squares(3) # Print squares of 1, 2, 3
🔹 خروجی:
1
4
9
🔰 این کد چیکار میکنه؟
تابع print_squares یه عدد n میگیره.
با حلقه for، مربع اعداد از 1 تا n رو چاپ میکنه.
برای n=3، مربعهای 1، 4، و 9 چاپ میشن.
✅ چرا حلقه تو تابع باحاله؟
- میتونی کارهای تکراری رو توی یه تابع جمع کنی و هر وقت لازم شد صداش کنی.
- کدت تمیزتر میشه و راحتتر میتونی تغییرش بدی.
✨ مثال روزمره: فرض کن داری یه برنامه برای چاپ جدول ضرب میسازی. یه تابع مینویسی که جدول ضرب یه عدد رو با حلقه چاپ کنه.
❓ تمرین: یه تابع بنویسید که یه عدد بگیره و اعداد زوج از 1 تا اون عدد رو چاپ کنه. تابع رو با دو عدد مختلف تست کنید.
💯 @PythonForYou 🧑💻👩💻