پاسخ تمرین انواع تابع از نظر ورودی
در واقع، در این صفحه پاسخ تمرین انواع تابع از نظر ورودی را همراه با کد کامل و توضیح میبینید.
| نام دوره | دوره آموزش پایتون مقدماتی |
| درسنامه | انواع تابع از نظر ورودی در پایتون |
| تمرینها | مشاهده |
پاسخ تمرین ۱ – ترتیبی و نامی
def introduce(name, city):
return f"{name} اهل {city} است"
print(introduce("علی", "تهران"))
print(introduce(city="تهران", name="علی"))
print(introduce("تهران", "علی"))
علی اهل تهران است
علی اهل تهران است
تهران اهل علی است
بنابراین خط سوم خطا نمیدهد؛ فقط بیمعنی است. پایتون نمیداند منظورتان چه بوده. به همین دلیل، در توابعی که چند ورودی همنوع دارند، آرگومان نامی خیلی امنتر است.
پاسخ تمرین ۲ – میانگین با تعداد نامشخص
def average(*numbers):
if not numbers:
return 0
return sum(numbers) / len(numbers)
print(average(10, 20))
print(average(10, 20, 30))
print(average(1, 2, 3, 4, 5))
15.0
20.0
3.0
همچنین، آن شرط if not numbers مهم است. اگر تابع را بدون ورودی صدا بزنید، بدون آن خطای ZeroDivisionError میگیرید.
پاسخ تمرین ۳ – مشخصات محصول
def show(**info):
for key, value in info.items():
print(f"{key} = {value}")
show(name="لپتاپ", price=45000000, stock=3)
name = لپتاپ
price = 45000000
stock = 3
دو ستاره یعنی همهی ورودیهای نامی را داخل یک دیکشنری بریز. یک ستاره هم یعنی همهی ورودیهای ترتیبی را داخل یک تاپل.
پاسخ تمرین ۴ – دام معروف
['سیب']
['سیب', 'موز']
مقدار پیشفرض فقط یک بار و در لحظهی تعریف تابع ساخته میشود، نه در هر بار صدا زدن. پس هر دو صدا زدن، روی یک لیست مشترک کار میکنند.
def add_item(item, items=None):
if items is None:
items = []
items.append(item)
return items
این سؤال در مصاحبههای استخدامی خیلی زیاد پرسیده میشود. قاعدهی ساده: هرگز لیست، دیکشنری یا مجموعه را به عنوان مقدار پیشفرض نگذارید.
پاسخ تمرین ۵ – تعداد اشتباه
TypeError: introduce() missing 1 required positional argument: 'city'
پیام خطا دقیقاً میگوید کدام پارامتر جا مانده. همین یک خط، دلیل خوبی است برای اینکه اسم پارامترهایتان را معنادار بگذارید.
برای مطالعهی بیشتر میتوانید به مستندات رسمی پایتون سر بزنید.