تابع با ورودی از کاربر ⌨️
تا حالا تابعهایی ساختیم که خودمون ورودی بهشون میدادیم. حالا بیاید یه تابع بنویسیم که از کاربر ورودی بگیره! اینجوری برنامهمون تعاملیتر میشه.
✨ مثال:
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 🧑💻👩💻
تابع و لیستها 📋
تابعها با لیستها خیلی خوب کار میکنن و میتونن دادههای زیادی رو مدیریت کنن. بیاید یه تابع بنویسیم که با لیست کار کنه!
✨ مثال:
def sum_list(numbers):
total = 0
for num in numbers:
total += num
return total # Return sum of list
print(sum_list([1, 2, 3, 4])) # Sum of list
print(sum_list([10, 20, 30])) # Sum of another list
🔹 خروجی:
10
60
🔰 این کد چیکار میکنه؟
تابع sum_list یه لیست از اعداد میگیره.
با حلقه، همه اعداد رو جمع میکنه و نتیجه رو برمیگردونه.
برای لیست [1, 2, 3, 4]، خروجی 10ه و برای [10, 20, 30]، خروجی 60.
✅ چرا این تابع باحاله؟
- میتونی با هر لیست از اعداد کار کنی، مهم نیست چند تا عدد باشه.
- میتونی از خروجی تابع تو محاسبات دیگه استفاده کنی.
✨ مثال روزمره: فرض کن داری یه اپلیکیشن برای مدیریت هزینهها میسازی. یه تابع مینویسی که لیست خریدهای یه روز رو بگیره و جمعشون رو حساب کنه.
❓ تمرین: یه تابع بنویسید که یه لیست از اعداد بگیره و بزرگترین عدد رو برگردونه. تابع رو با دو لیست مختلف تست کنید.
💯 @PythonForYou 🧑💻👩💻
تابع و شرطها 🎚
تابعها با شرطها (مثل if) خیلی خوب کار میکنن و میتونن تصمیمهای هوشمندانه بگیرن. بیاید یه تابع بنویسیم که از شرط استفاده کنه!
✨ مثال:
def check_age(age):
if age >= 18:
print("You're an adult!") # Print for adults
else:
print("You're a teen!") # Print for teens
check_age(20)
check_age(15)
🔹 خروجی:
You're an adult!
You're a teen!
🔰 این کد چیکار میکنه؟
تابع check_age یه عدد age میگیره.
با شرط if چک میکنه که سن 18 یا بیشتره یا نه.
بسته به شرط، پیغام مناسب چاپ میشه.
✅ چرا شرط تو تابع مهمه؟
- میتونی تابع رو طوری بنویسی که بسته به ورودی، رفتارهای مختلف داشته باشه.
- باعث میشه برنامهت انعطافپذیرتر و واقعیتر باشه.
✨ مثال روزمره: فرض کن داری یه برنامه برای امتحانات میسازی. یه تابع مینویسی که نمره رو بگیره و بگه قبوله یا نه.
❓ تمرین: یه تابع بنویسید که یه عدد بگیره و بگه مثبت، منفی، یا صفره. تابع رو با چند عدد مختلف تست کنید.
💯 @PythonForYou 🧑💻👩💻
تابع و دیکشنریها 📖
تابعها با دیکشنریها هم خیلی خوب کار میکنن و میتونن دادههای پیچیده رو مدیریت کنن. بیاید یه تابع بنویسیم که با دیکشنری کار کنه!
✨ مثال:
def print_dict(data):
for key, value in data.items():
print(f"{key}: {value}") # Print key-value pairs
print_dict({"name": "Ali", "age": 18, "city": "Tehran"})
🔹 خروجی:
name: Ali
age: 18
city: Tehran
🔰 این کد چیکار میکنه؟
تابع print_dict یه دیکشنری میگیره.
با حلقه، همه کلیدها و مقادیر رو چاپ میکنه.
دیکشنری میتونه هر تعداد جفت کلید-مقدار داشته باشه.
✅ چرا این تابع باحاله؟
- میتوتی اطلاعات ساختاریافته (مثل مشخصات یه نفر) رو راحت مدیریت کنی.
- دیکشنریها برای ذخیره دادههای واقعی (مثل اطلاعات کاربر) خیلی کاربردین.
✨ مثال روزمره: فرض کن داری یه اپلیکیشن برای مدیریت دانشآموزا میسازی. یه تابع مینویسی که مشخصات هر دانشآموز (اسم، سن، نمره) رو از دیکشنری بگیره و چاپ کنه.
❓ تمرین: یه تابع بنویسید که یه دیکشنری بگیره و فقط کلیدها رو چاپ کنه. تابع رو با دو دیکشنری مختلف تست کنید.
💯 @PythonForYou 🧑💻👩💻
پروژه کوچیک: ماشینحساب با تابع 🚀
حالا که کلی درباره تابعها یاد گرفتیم، بیاید یه پروژه کوچیک بسازیم: یه ماشینحساب ساده با تابع! این تابع قراره چند عملیات ریاضی رو انجام بده و نشون بده چطور همهچیز رو کنار هم میذاریم.
✨ مثال:
def calculator(a, b, operation):
if operation == "add":
return a + b # Return sum
elif operation == "subtract":
return a - b # Return difference
elif operation == "multiply":
return a * b # Return product
elif operation == "divide":
if b == 0:
print("Cannot divide by zero!") # Handle division by zero
return None
return a / b # Return division
else:
print("Invalid operation!") # Handle invalid input
return None
print(calculator(10, 5, "add")) # Test addition
print(calculator(10, 5, "divide")) # Test division
print(calculator(10, 0, "divide")) # Test division by zero
🔹 خروجی:
15
2.0
Cannot divide by zero!
None
🔰 این کد چیکار میکنه؟
تابع calculator سه پارامتر میگیره: دو عدد (a و b) و نوع عملیات (operation).
با شرط if، عملیات مناسب (جمع، تفریق، ضرب، تقسیم) رو انجام میده.
برای تقسیم، چک میکنه که b صفر نباشه تا خطا نده.
اگه عملیات نامعتبر باشه، پیغام خطا چاپ میکنه.
✅ چرا این پروژه باحاله؟
- نشون میده چطور تابع میتونه چند کار مختلف رو مدیریت کنه.
- ترکیب پارامترها، شرطها، و مدیریت خطاها رو تو یه تابع واقعی میبینی.
✨ مثال روزمره: فرض کن داری یه اپلیکیشن ماشینحساب برای گوشی میسازی. این تابع میتونه هسته اصلی برنامهت باشه!
❓ تمرین: تابع ماشینحساب رو گسترش بدید که عملیات "قدرت" (مثل a به توان b) رو هم ساپورت کنه. تابع رو با چند عملیات مختلف تست کنید.
💯 @PythonForYou 🧑💻👩💻
تو این پست قراره عمیق بریم تو دنیای توابع پایتون و همهچیز درباره نحوه ارسال پارامترها، توابع نامبی، و دامنه متغیرها رو با کلی مثال یاد بگیریم.
انگار یه مدرس حرفهای کنار شماست که قدمبهقدم توضیح میده! 🧑🏫
آمادهاید که کدزنیتون رو به سطح بعدی ببرید؟ بریم شروع کنیم! 🚀
1. ارسال پارامترها به تابعها 🎛
تو پایتون، میتونی به تابعها پارامتر بدی تا کارای مختلف انجام بدن. پارامترها مثل مواد اولیه تو آشپزیان: بسته به چیزی که میدی، نتیجه متفاوته! 🍳
بیاید انواع روشهای ارسال پارامتر رو ببینیم.
💯 @PythonForYou 🧑💻👩💻
1.1. ارسال پارامتر از طریق مقدار
وقتی یه مقدار (مثل عدد یا رشته) به تابع میدی، پایتون یه کپی از اون مقدار رو به تابع میفرسته. این یعنی تغییر پارامتر داخل تابع، روی متغیر اصلی بیرون تابع اثر نمیذاره.
✨ مثال 1: جمع دو عدد
def add_numbers(a, b):
print(f"Sum: {a + b}") # Print sum of two numbers
a = 100 # Try to change parameter
print(f"Inside function, a is: {a}") # Print modified a
x = 5
y = 3
add_numbers(x, y)
print(f"Outside function, x is: {x}") # Print original x
🔹 خروجی:
Sum: 8
Inside function, a is: 100
Outside function, x is: 5
✅ توضیح: تابع add_numbers دو عدد a و b میگیره و جمعشون رو چاپ میکنه. تغییر a داخل تابع روی x بیرون تابع اثر نداره چون از طریق مقدار فرستاده شده.
✨ مثال 2: تغییر رشته
def change_string(text):
print(f"Original text: {text}") # Print original text
text = "New text!"
print(f"Inside function: {text}") # Print modified text
message = "Hello"
change_string(message)
print(f"Outside function: {message}") # Print original message
🔹 خروجی:
Original text: Hello
Inside function: New text!
Outside function: Hello
✨ مثال 3: محاسبه مساحت
def calculate_area(length, width):
print(f"Area: {length * width}") # Print area
length = 0 # Try to change parameter
print(f"Inside function, length: {length}") # Print modified length
l = 4
w = 5
calculate_area(l, w)
print(f"Outside function, length: {l}") # Print original length
🔹 خروجی:
Area: 20
Inside function, length: 0
Outside function, length: 4
✨ مثال روزمره: فرض کن داری یه اپلیکیشن برای محاسبه قیمت غذا میسازی. تابع قیمت غذا و تعداد رو میگیره، ولی تغییر تعداد داخل تابع روی سفارش اصلی اثر نمیذاره.
❓ تمرین: یه تابع بنویسید که یه عدد بگیره، مربعش رو چاپ کنه، و سعی کنه عدد رو داخل تابع تغییر بده. عدد اصلی رو بیرون تابع چاپ کنید تا ببینید تغییر نکرده.
💯 @PythonForYou 🧑💻👩💻
2.1. آرگومانهای اجباری
آرگومانهای اجباری یعنی پارامترهایی که باید موقع صدا کردن تابع بهشون مقدار بدی، وگرنه خطا میگیری.
✨ مثال 1: خوشامدگویی
def greet(name):
print(f"Hey {name}, welcome to Python!") # Print greeting
greet("Ali") # Works fine
# greet() # Error! Missing required argument
🔹 خروجی:
Hey Ali, welcome to Python!
✅ توضیح: تابع greet یه پارامتر اجباری name داره. اگه ندی، خطای TypeError میگیرید.
✨ مثال 2: محاسبه توان
def power(base, exponent):
print(f"{base} to the power {exponent} is: {base ** exponent}") # Print power
power(2, 3) # Works fine
# power(2) # Error! Missing required argument
🔹 خروجی:
2 to the power 3 is: 8
✨مثال 3: ثبتنام کاربر
def register_user(username, email):
print(f"User {username} registered with {email}") # Print registration
register_user("Sara", "sara@example.com")
🔹 خروجی:
User Sara registered with sara@example.com
✨ مثال روزمره: فرض کن داری یه فرم ثبتنام آنلاین میسازی. تابع ثبتنام باید اسم و ایمیل رو اجباری بگیره، وگرنه ثبتنام کامل نمیشه.
❓ تمرین: یه تابع بنویسید که دو پارامتر اجباری (مثلاً اسم و سن) بگیره و یه پیغام چاپ کنه. تابع رو با مقادیر درست و بدون مقدار تست کنید تا خطا ببینید.
💯 @PythonForYou 🧑💻👩💻
3.1. آرگومانهای کلمه کلیدی
میتونی موقع صدا کردن تابع، اسم پارامترها رو مشخص کنی تا ترتیب مهم نباشه. به این میگن آرگومانهای کلمه کلیدی.
✨ مثال 1: اطلاعات کاربر
def user_info(name, age):
print(f"Name: {name}, Age: {age}") # Print user info
user_info(age=18, name="Ali") # Keyword arguments
user_info(name="Sara", age=20)
🔹 خروجی:
Name: Ali, Age: 18
Name: Sara, Age: 20
✨ مثال 2: هزینه سفر
def travel_cost(destination, cost):
print(f"Trip to {destination} costs {cost}") # Print travel cost
travel_cost(cost=500, destination="Paris")
🔹 خروجی:
Trip to Paris costs 500
✨مثال 3: سفارش غذا
def order_food(food, quantity):
print(f"Ordered {quantity} of {food}") # Print order
order_food(quantity=2, food="Pizza")
🔹 خروجی:
Ordered 2 of Pizza
✅ چرا کلمه کلیدی باحاله؟
- ترتیب پارامترها مهم نیست، پس کد خواناتر میشه.
- وقتی تابع پارامترهای زیادی داره، مشخص کردن اسمها از اشتباه جلوگیری میکنه.
✨ مثال روزمره: فرض کن داری یه اپلیکیشن رزرو بلیط میسازی. با آرگومانهای کلمه کلیدی، کاربر میتونه مقصد و تاریخ رو به هر ترتیبی وارد کنه.
❓ تمرین: یه تابع بنویسید که سه پارامتر (اسم، شهر، شغل) بگیره و پیغام چاپ کنه. تابع رو با آرگومانهای کلمه کلیدی و با ترتیبهای مختلف صدا کنید.
💯 @PythonForYou 🧑💻👩💻