در بخشهای قبلی آموزش پایتون با مفاهیم پایه مانند متغیرها، ورودی و خروجی، شرطها، حلقهها، ساختارهای دادهای اولیه و کمی توابع آشنا شدیم.
حالا زمان آن رسیده که برنامههایمان را حرفهایتر و منظمتر بنویسیم. در این بخش یاد میگیریم چگونه با استفاده از توابع کدهای خود را دستهبندی و قابل استفاده مجدد کنیم، چگونه اطلاعات را با Dictionary مدیریت کنیم و چگونه دادههای پیچیدهتر را در برنامههای واقعی به کار ببریم.
در پایان این بخش با ترکیب این مفاهیم، چند پروژه عملی خواهیم ساخت و قدمی مهم برای نوشتن برنامههای بزرگتر و کاربردیتر برمیداریم
این آموزش با الهام از دوره Python Bootcamp از Angela Yu و با بازنویسی آموزشی، مثالهای تکمیلی و تمرینهای اختصاصی تهیه شده است.
- مروری بر مفهوم تابع در پایتون
- کار با ورودیهای تابع (Function Parameters)
- پروژه محاسبه تعداد قوطی رنگ
- بررسی اعداد اول با تابع (Prime Number Checker)
- آشنایی با Dictionary در پایتون
- مدیریت اطلاعات در دیکشنری
- پروژه تبدیل امتیاز دانشآموزان به سطح عملکرد
- ساختارهای داده تو در تو در پایتون
- کار با دادههای پیچیده و توابع
- بازگرداندن مقدار از تابع (Return)
- مستندسازی توابع با Docstring
- پروژه تمرینی بخش سوم: سیستم مزایده
- تمرینهای برنامهنویسی این بخش همراه با پاسخ
1. مروری بر مفهوم تابع (Function)
تابع چیست؟
در برنامهنویسی، معمولاً بخشهایی از کد چندین بار تکرار میشوند.
برای مثال، فرض کنید در یک برنامه چند بار نیاز داریم پیام خوشآمدگویی نمایش دهیم:
print("Welcome to Python")
print("Start your programming journey")اگر این کد را در چند جای برنامه تکرار کنیم، نگهداری آن سخت میشود. اینجا تابع به کمک ما میآید.
تابع یک بخش مستقل از برنامه است که یک وظیفه مشخص را انجام میدهد و هر زمان که نیاز داشته باشیم میتوانیم آن را اجرا کنیم.
ساختار کلی تابع:
def function_name():
# instructionsکلمه کلیدی def مخفف define است و برای تعریف تابع استفاده میشود.
مثال:
def show_message():
print("Hello Python")
print("Learning functions")
show_message()خروجی:
Hello Python
Learning functionsدر این مثال:
- تابعی به نام
show_messageساختیم. - داخل آن دو دستور قرار دادیم.
- با نوشتن نام تابع، آن را اجرا کردیم.
2. کار با ورودیهای تابع (Function Parameters)
گاهی یک تابع برای انجام کار خود به اطلاعات نیاز دارد. مثلاً تابعی که قرار است نام کاربر را نمایش دهد، باید نام را دریافت کند.
برای این کار از پارامتر استفاده میکنیم.
مثال: ساخت تابع با ورودی
def greet(name):
print(f"Hello {name}")
greet("Ali")خروجی:
Hello Aliاینجا name یک پارامتر است و Ali یک آرگومان است.
Parameter و Argument چه تفاوتی دارند؟
این دو اصطلاح شبیه هم هستند اما کاربرد متفاوتی دارند: پارامتر (parameter) متغیری است که هنگام ساخت تابع تعریف میکنیم و آرگومان (argument) مقداری است که هنگام اجرای تابع ارسال میکنیم.
مثال:
def greet(name):
print(name)
greet("Sara")name = parameter
"Sara" = argumentچند ورودی برای تابع
یک تابع میتواند چندین ورودی داشته باشد.
مثال:
def introduce(name, country):
print(f"My name is {name}")
print(f"I live in {country}")
introduce("Reza", "Iran")خروجی:
My name is Reza
I live in Iranاهمیت ترتیب ورودیها
در حالت عادی پایتون مقدارها را بر اساس ترتیب قرار میدهد.
مثال:
def user_information(name, age):
print(name)
print(age)
user_information("Ali", 25)نتیجه:
Ali
25اما:
user_information(25, "Ali")نتیجه اشتباه خواهد بود:
25
AliKeyword Arguments
برای جلوگیری از اشتباه میتوانیم نام پارامتر را مشخص کنیم.
مثال:
def user_information(name, age):
print(name)
print(age)
user_information(
age=25,
name="Ali"
)در این حالت ترتیب مهم نیست.
3. پروژه محاسبه تعداد قوطی رنگ
تا اینجا یاد گرفتیم چگونه تابع بسازیم و اطلاعات را به آن ارسال کنیم. حالا میخواهیم یک مسئله واقعی را با استفاده از تابع حل کنیم.
تحلیل مسئله
فرض کنید میخواهیم یک دیوار را رنگ کنیم. اطلاعاتی که داریم:
- ارتفاع دیوار
- عرض دیوار
- مقدار پوشش هر قوطی رنگ
هر قوطی رنگ میتواند مقدار مشخصی از سطح دیوار را پوشش دهد. هدف ما این است که محاسبه کنیم چند قوطی رنگ نیاز داریم.
فرمول:
مساحت دیوار = ارتفاع × عرض
تعداد قوطی = مساحت دیوار ÷ مقدار پوشش هر قوطیاما یک نکته مهم وجود دارد.
اگر نتیجه اعشاری باشد، نمیتوانیم بخشی از یک قوطی را خریداری کنیم.
مثلاً:
مساحت دیوار = 18 متر
پوشش هر قوطی = 5 متر
18 ÷ 5 = 3.6برای گرد کردن به سمت بالا از تابع ceil() در کتابخانه math استفاده میکنیم.
استفاده از کتابخانه Math
برای استفاده از امکانات ریاضی پایتون میتوانیم کتابخانه math را وارد کنیم.
import mathیکی از توابع مهم این کتابخانه:
math.ceil()است. این تابع همیشه عدد را به سمت بالا گرد میکند.
مثال:
import math
number = 4.2
result = math.ceil(number)
print(result)خروجی:
5ساخت تابع محاسبه رنگ
حالا مسئله را تبدیل به یک تابع میکنیم:
import math
def calculate_paint_cans(height, width, coverage):
wall_area = height * width
cans = math.ceil(
wall_area / coverage
)
print(
f"You need {cans} cans of paint"
)
calculate_paint_cans(
3,
6,
5
)خروجی:
You need 4 cans of paintدریافت اطلاعات از کاربر
در برنامههای واقعی معمولاً مقدارها از کاربر دریافت میشوند.
نسخه کاملتر:
import math
def calculate_paint_cans(height, width, coverage):
wall_area = height * width
cans = math.ceil(
wall_area / coverage
)
print(
f"You need {cans} cans of paint"
)
wall_height = int(
input("Enter wall height: ")
)
wall_width = int(
input("Enter wall width: ")
)
calculate_paint_cans(
wall_height,
wall_width,
5
)در این برنامه:
- کاربر ارتفاع را وارد میکند.
- کاربر عرض را وارد میکند.
- اطلاعات به تابع ارسال میشوند.
- تابع تعداد قوطیها را محاسبه میکند.
4. بررسی اعداد اول با تابع (Prime Number Checker)
در این تمرین میخواهیم برنامهای بسازیم که تشخیص دهد یک عدد اول است یا خیر.
عدد اول چیست؟
عدد اول عددی است که:
- بزرگتر از یک باشد.
- فقط بر خودش و عدد یک بخشپذیر باشد.
مثال:
اعداد اول:
2
3
5
7
11اعداد غیر اول:
4
8
12
15برای مثال عدد 10 اول نیست:
10 ÷ 2 = 5ساخت تابع بررسی عدد اول
def check_prime(number):
is_prime = True
for i in range(2, number):
if number % i == 0:
is_prime = False
if is_prime:
print(
f"{number} is a prime number"
)
else:
print(
f"{number} is not a prime number"
)
check_prime(13)خروجی:
13 is a prime numberدریافت عدد از کاربر
def check_prime(number):
is_prime = True
for i in range(2, number):
if number % i == 0:
is_prime = False
if is_prime:
print("Prime number")
else:
print("Not prime number")
user_number = int(
input("Enter a number: ")
)
check_prime(user_number)5. آشنایی با Dictionary در پایتون
تا اینجا با لیستها آشنا شدیم. لیستها اطلاعات را با شماره جایگاه ذخیره میکنند.
مثال:
names = [
"Ali",
"Sara",
"Reza"
]برای دسترسی:
print(names[0])خروجی:
Aliاما در بسیاری از برنامهها بهتر است اطلاعات با یک نام مشخص ذخیره شوند. اینجا Dictionary وارد میشود.
Dictionary چیست؟
Dictionary یک ساختار داده است که اطلاعات را به صورت:
Key : Valueذخیره میکند.
مثال:
student = {
"name": "Ali",
"age": 20,
"grade": "A"
}
print(student["name"])در این مثال:
name
age
gradeکلیدها هستند و:
Ali
20
Aمقادیر ما میباشند.
چرا Dictionary مهم است؟
در پروژههای واقعی تقریباً همیشه با دادههایی شبیه Dictionary کار میکنیم.
مثلاً اطلاعات یک محصول:
product = {
"title": "Laptop",
"price": 800,
"stock": 15
}یا اطلاعات یک کاربر:
user = {
"username": "admin",
"email": "admin@test.com",
"active": True
}دسترسی به اطلاعات Dictionary
برای دریافت مقدار یک کلید:
user = {
"name": "Sara",
"age": 25
}
print(user["age"])خروجی:
25اضافه کردن مقدار جدید
میتوانیم بعداً اطلاعات جدید اضافه کنیم.
user = {
"name": "Sara"
}
user["city"] = "Tehran"
print(user)خروجی:
{
'name': 'Sara',
'city': 'Tehran'
}تغییر مقدار موجود
اگر کلید وجود داشته باشد، مقدار آن تغییر میکند.
user = {
"name": "Sara",
"age": 25
}
user["age"] = 26
print(user)خروجی:
{'name': 'Sara', 'age': 26}6. مدیریت اطلاعات در Dictionary
تا اینجا یاد گرفتیم چگونه یک Dictionary بسازیم و به اطلاعات آن دسترسی داشته باشیم. اما در برنامههای واقعی فقط خواندن اطلاعات کافی نیست.
ما معمولاً نیاز داریم:
- اطلاعات جدید اضافه کنیم.
- اطلاعات قبلی را تغییر دهیم.
- روی دادهها پیمایش کنیم.
- اطلاعات را مدیریت کنیم.
ایجاد Dictionary خالی
گاهی در شروع برنامه هنوز اطلاعاتی نداریم و میخواهیم بعداً دادهها را اضافه کنیم. برای این کار یک Dictionary خالی میسازیم.
user_data = {}
user_data["name"] = "Ali"
user_data["age"] = 30
print(user_data)خروجی:
{'name': 'Ali', 'age': 30}پاک کردن اطلاعات Dictionary
اگر بخواهیم تمام اطلاعات یک Dictionary را حذف کنیم، میتوانیم دوباره آن را برابر {} قرار دهیم.
مثال:
profile = {
"name": "Sara",
"job": "Designer"
}
profile = {}
print(profile)خروجی:
{}بررسی وجود یک کلید
گاهی قبل از استفاده از یک مقدار، بهتر است بررسی کنیم که آیا کلید مورد نظر وجود دارد یا خیر.
مثال:
student = {
"name": "Ali",
"score": 90
}
if "score" in student:
print(student["score"])
else:
print("Score not found")خروجی:
90پیمایش در Dictionary
یکی از کاربردهای مهم Dictionary، خواندن تمام اطلاعات آن است. برای این کار از حلقه for استفاده میکنیم.
مثال:
student = {
"name": "Ali",
"age": 20,
"city": "Tehran"
}
for key in student:
print(key)
print(student[key])خروجی:
name
Ali
age
20
city
Tehranدر این حلقه:
for key in student:هر بار یکی از کلیدهای Dictionary داخل متغیر key قرار میگیرد.
سپس:
student[key]مقدار مربوط به آن کلید را برمیگرداند.
7. پروژه تبدیل امتیاز دانشآموزان به سطح عملکرد
حالا میخواهیم یک مسئله واقعیتر حل کنیم.
فرض کنید امتیاز چند دانشآموز را داریم و میخواهیم بر اساس امتیاز آنها یک سطح عملکرد تعیین کنیم.
قوانین:
- بالاتر از ۹۰ → عالی
- بالاتر از ۸۰ → خوب
- بالاتر از ۷۰ → قابل قبول
- کمتر از آن → مردود
اطلاعات اولیه
ابتدا امتیازها را در یک Dictionary ذخیره میکنیم.
student_scores = {
"Ali": 95,
"Sara": 84,
"Reza": 72,
"Mina": 60
}ساخت Dictionary جدید برای نتیجه
حالا نتیجه هر دانشآموز را در Dictionary دیگری ذخیره میکنیم.
student_grades = {}
for student in student_scores:
score = student_scores[student]
if score >= 90:
student_grades[student] = "Excellent"
elif score >= 80:
student_grades[student] = "Good"
elif score >= 70:
student_grades[student] = "Acceptable"
else:
student_grades[student] = "Fail"
print(student_grades)خروجی:
{
'Ali': 'Excellent',
'Sara': 'Good',
'Reza': 'Acceptable',
'Mina': 'Fail'
}در این پروژه چند مفهوم را همزمان استفاده کردیم:
- Dictionary
- حلقه
for - شرطها
- ایجاد داده جدید
این ترکیب در پروژههای واقعی بسیار رایج است.
8. ساختارهای داده تو در تو (Nested Data Structures)
در پروژههای واقعی، دادهها معمولاً ساده نیستند. برای مثال اطلاعات یک کاربر فقط یک مقدار نیست. ممکن است شامل:
- نام
- ایمیل
- لیست سفارشها
- تاریخها
- تنظیمات
باشد.
برای مدیریت این اطلاعات از ساختارهای تو در تو استفاده میکنیم.
قرار دادن List داخل Dictionary
مثال:
user = {
"name": "Ali",
"skills": [
"Python",
"JavaScript",
"SQL"
]
}
print(user["skills"])خروجی:
['Python', 'JavaScript', 'SQL']دسترسی به یک مقدار ازلیست:
print(user["skills"][0])خروجی:
Pythonقرار دادن Dictionary داخل Dictionary
گاهی یک Dictionary شامل چند Dictionary دیگر است.
مثال:
users = {
"user1": {
"name": "Ali",
"age": 25
},
"user2": {
"name": "Sara",
"age": 30
}
}برای دسترسی:
print(users["user1"]["name"])خروجی:
Aliقرار دادن Dictionary داخل List
یکی از پرکاربردترین ساختارها در برنامههای واقعی:
products = [
{
"name": "Laptop",
"price": 900
},
{
"name": "Phone",
"price": 500
}
]در اینجا:
- یک List داریم.
- هر عضو List یک Dictionary است.
چرا این ساختار مهم است؟
چون بسیاری از دادههایی که از اینترنت دریافت میکنیم، همین شکل را دارند.
مثلاً یک API فروشگاه:
[
{
"id":1,
"name":"Laptop"
},
{
"id":2,
"name":"Phone"
}
]9. کار با دادههای پیچیده و توابع
حالا میخواهیم ترکیب مهمتری ایجاد کنیم:
ارسال Dictionary به تابع
در پایتون Dictionary هم مانند سایر دادهها میتواند ورودی تابع باشد.
مثال:
def show_user(user):
print(
f"Name: {user['name']}"
)
print(
f"Age: {user['age']}"
)
person = {
"name": "Ali",
"age": 25
}
show_user(person)خروجی:
Name: Ali
Age: 25اضافه کردن اطلاعات جدید با تابع
حالا یک تابع میسازیم که اطلاعات کشور جدیدی را به لیست سفرها اضافه کند.
ابتدا لیست اطلاعات:
travel_history = [
{
"country": "France",
"cities": [
"Paris",
"Lyon"
],
"visits": 3
}
]تابع اضافه کردن کشور:
def add_country(
country_name,
visit_count,
cities
):
new_country = {
"country": country_name,
"visits": visit_count,
"cities": cities
}
travel_history.append(new_country)
add_country(
"Japan",
2,
[
"Tokyo",
"Osaka"
]
)
print(travel_history)در اینجا یاد گرفتیم که:
- تابع میتواند اطلاعات دریافت کند.
- Dictionary میتواند داخل List قرار بگیرد.
- با تابع میتوانیم داده جدید بسازیم و ذخیره کنیم.
این دقیقاً همان الگویی است که در برنامههای واقعی برای مدیریت اطلاعات استفاده میشود.
10. بازگرداندن مقدار از تابع (Return)
تا اینجا در بیشتر مثالها، توابع ما فقط یک کار انجام میدادند و نتیجه را با print() نمایش میدادند. اما در برنامههای واقعی معمولاً نمیخواهیم تابع فقط چیزی را
نمایش دهد. ما نیاز داریم نتیجه یک محاسبه را دریافت کنیم و در بخش دیگری از برنامه استفاده کنیم. برای این کار از دستور return استفاده میکنیم.
تفاوت Print و Return
ابتدا یک مثال با print() ببینیم:
def calculate_sum(a, b):
print(a + b)
calculate_sum(5, 10)خروجی:
15این کد عدد ۱۵ را نمایش میدهد، اما ما نمیتوانیم آن را در یک متغیر ذخیره کنیم.
مثلاً:
result = calculate_sum(5, 10)
print(result)خروجی:
15
Noneچرا؟
چون تابع چیزی برنگردانده است.
استفاده از Return
حالا همان مثال را با return مینویسیم:
def calculate_sum(a, b):
return a + b
result = calculate_sum(5, 10)
print(result)خروجی:
15در این حالت مقدار خروجی تابع را دریافت کردهایم.
ذخیره نتیجه تابع
یکی از مزیتهای مهم return این است که میتوانیم نتیجه را ذخیره کنیم.
مثال:
def multiply(number1, number2):
return number1 * number2
price = multiply(20, 5)
total_price = price + 100
print(total_price)خروجی:
200چند مقدار در یک تابع
یک تابع میتواند چند مقدار را همزمان برگرداند.
مثال:
def calculate(a, b):
total = a + b
difference = a - b
return total, difference
result = calculate(10, 3)
print(result)خروجی:
(13, 7)استفاده از Return در پروژهها
فرض کنید یک فروشگاه داریم.
به جای اینکه تابع فقط قیمت را چاپ کند، بهتر است مقدار را برگرداند.
def calculate_discount(price, discount):
final_price = price - (price * discount / 100)
return final_price
new_price = calculate_discount(1000, 20)
print(new_price)خروجی:
800حالا میتوانیم این مقدار را:
- ذخیره کنیم.
- داخل دیتابیس قرار دهیم.
- دوباره محاسبه کنیم.
- نمایش دهیم.
11. مستندسازی توابع با Docstring
وقتی برنامهها بزرگتر میشوند، فقط نوشتن کد کافی نیست.
بعد از مدتی ممکن است خودمان هم فراموش کنیم یک تابع دقیقاً چه کاری انجام میدهد.
برای توضیح هدف تابع از Docstring استفاده میکنیم.
Docstring چیست؟
Docstring یک متن توضیحی است که در اولین خط داخل تابع نوشته میشود.
مثال:
def calculate_area(width, height):
"""
Calculate the area of a rectangle
using width and height.
"""
return width * heightاین توضیح به برنامهنویس کمک میکند بفهمد تابع چه کاری انجام میدهد.
مشاهده Docstring
میتوانیم توضیحات تابع را ببینیم:
print(calculate_area.__doc__)خروجی:
Calculate the area of a rectangle
using width and height.چرا Docstring مهم است؟
در پروژههای بزرگ:
- چندین برنامهنویس روی یک پروژه کار میکنند.
- تعداد توابع زیاد میشود.
- نگهداری کد سختتر میشود.
داشتن توضیح برای توابع باعث میشود کد حرفهایتر و قابل فهمتر باشد.
12. پروژه تمرینی بخش سوم: سیستم مزایده (Blind Auction)
در این پروژه چند مفهوم مهم را ترکیب میکنیم:
- Dictionary
- Function
- Loop
- شرطها
- ورودی کاربر
ایده پروژه
فرض کنید چند نفر در یک مزایده شرکت میکنند.
هر شخص:
- نام خود را وارد میکند.
- مبلغ پیشنهادی خود را وارد میکند.
در پایان برنامه باید:
- بیشترین پیشنهاد را پیدا کند.
- برنده را اعلام کند.
ابتدا یک Dictionary برای ذخیره پیشنهادها ایجاد میکنیم.
مثال:
bids = {
"Ali": 500,
"Sara": 700,
"Reza": 600
}ساختار:
نام شخص : مبلغ پیشنهادساخت تابع پیدا کردن برنده
تابع باید Dictionary را دریافت کند. سپس تمام پیشنهادها را بررسی کند.
def find_highest_bidder(bidding_data):
highest_bid = 0
winner = ""
for bidder in bidding_data:
bid_amount = bidding_data[bidder]
if bid_amount > highest_bid:
highest_bid = bid_amount
winner = bidder
print(
f"Winner is {winner} with ${highest_bid}"
)اجرای برنامه کامل:
import os
bids = {}
auction_finished = False
def find_highest_bidder(bidding_data):
highest_bid = 0
winner = ""
for bidder in bidding_data:
bid_amount = bidding_data[bidder]
if bid_amount > highest_bid:
highest_bid = bid_amount
winner = bidder
print(
f"Winner is {winner} with ${highest_bid}"
)
while not auction_finished:
name = input(
"Enter your name: "
)
price = int(
input("Enter your bid: ")
)
bids[name] = price
another_bidder = input(
"Any other bidders? yes/no: "
)
if another_bidder == "no":
auction_finished = True
find_highest_bidder(bids)
elif another_bidder == "yes":
os.system("cls")در این پروژه یاد گرفتیم:
Dictionary برای ذخیره اطلاعات
bids[name] = priceهر پیشنهاد جدید را ذخیره میکند.
تابع برای جدا کردن یک وظیفه
find_highest_bidder()فقط مسئول پیدا کردن برنده است.
حلقه برای بررسی اطلاعات
for bidder in bidding_data:تمام پیشنهادها را بررسی میکند.
این پروژه نمونهای از یک برنامه واقعی مدیریت داده است.
جمعبندی بخش سوم
در این بخش یک قدم مهم در مسیر برنامهنویسی برداشتیم. یاد گرفتیم چگونه کدهای خود را با توابع مرتبتر کنیم، اطلاعات را با Dictionary مدیریت کنیم و ساختارهای پیچیدهتر برای ذخیره داده بسازیم.
همچنین با ساخت پروژههایی مانند سیستم مزایده دیدیم که چگونه چند مفهوم ساده میتوانند در کنار هم یک برنامه کاربردی ایجاد کنند.
13. چند تمرین برای این بخش:
تمرین 1: برنامهای بنویسید که نام چند دانشآموز را دریافت کند، نمره آنها را ذخیره کند، میانگین کلاس را محاسبه کند و بالاترین نمره را پیدا کند.
شرایط: (اطلاعات باید داخل dictionary ذخیره شود – محاسبه میانگین با یک تابع انجام شود.)
مشاهده پاسخ تمرین 1
student_scores = {
"Ali": 90,
"Sara": 80,
"Reza": 70,
"Mina": 95
}
def calculate_average(scores):
total = 0
for student in scores:
total += scores[student]
average = total / len(scores)
return average
def find_highest_score(scores):
highest_student = ""
highest_score = 0
for student in scores:
if scores[student] > highest_score:
highest_score = scores[student]
highest_student = student
return highest_student, highest_score
average = calculate_average(student_scores)
student, score = find_highest_score(student_scores)
print(f"Average: {average}")
print(
f"Highest score: {student} with {score}"
)تمرین 2: یک برنامه بسازید که اطلاعات محصولات را مدیریت کند: هر محصول شامل نام محصول، قیمت، تعداد موجودی باشد.
قابلیتها: (اضافهکردن محصول جدید، نمایش محصولات، محاسبه ارزش کل انبار) – از لیست و دیکشنری استفاده کنید.
مشاهده پاسخ تمرین 2
products = [
{
"name": "Laptop",
"price": 800,
"stock": 5
},
{
"name": "Phone",
"price": 500,
"stock": 10
}
]
def add_product(name, price, stock):
new_product = {
"name": name,
"price": price,
"stock": stock
}
products.append(new_product)
def show_products():
for product in products:
print(
f"{product['name']} - Price: {product['price']} - Stock: {product['stock']}"
)
def calculate_inventory_value():
total = 0
for product in products:
total += (
product["price"] *
product["stock"]
)
return total
add_product(
"Tablet",
300,
8
)
show_products()
total_value = calculate_inventory_value()
print(
f"Total inventory value: {total_value}"
)تمرین 3: تابعی بسازید که تبدیل واحد انجام دهد. برای مثال کیلومتر به متر و متر به سانتیمتر
برنامه باید نوع تبدیل را دریافت کند، مقدار را دریافت کند و نتیجه را برگرداند.
مشاهده پاسخ تمرین 3
def convert_unit(value, conversion_type):
if conversion_type == "km_to_m":
return value * 1000
elif conversion_type == "m_to_cm":
return value * 100
else:
return "Invalid conversion"
distance = float(
input("Enter value: ")
)
conversion = input(
"Choose conversion (km_to_m / m_to_cm): "
)
result = convert_unit(
distance,
conversion
)
print(result)تمرین 4: برنامهای بنویسید که یک عدد تصادفی تولید کند، کاربر حدس بزند، با شرطها مشخص کند عدد بزرگتر یا کوچکتر است و تعداد تلاشها را ذخیره کند.
قوانین: منطق بررسی حدس داخل یک تابع باشد – نتیجه تابع با return برگردانده شود.
مشاهده پاسخ تمرین 4
import random
secret_number = random.randint(1, 100)
attempts = 0
def check_guess(user_guess, secret):
if user_guess > secret:
return "Too high"
elif user_guess < secret:
return "Too low"
else:
return "Correct"
game_finished = False
while not game_finished:
guess = int(
input("Guess the number: ")
)
attempts += 1
result = check_guess(
guess,
secret_number
)
print(result)
if result == "Correct":
game_finished = True
print(
f"You won in {attempts} attempts"
)تمرین 5: برنامهای طراحی کنید که اطلاعات حساب کاربران را ذخیره کند. هر کاربر نام و موجودی داشته باشد.
توابعی بسازید برای واریز پول، برداشت پول و نمایش موجودی.
مشاهده پاسخ تمرین 5
accounts = {
"Ali": {
"balance": 1000
},
"Sara": {
"balance": 2000
}
}
def deposit(user, amount):
accounts[user]["balance"] += amount
return accounts[user]["balance"]
def withdraw(user, amount):
if accounts[user]["balance"] >= amount:
accounts[user]["balance"] -= amount
return accounts[user]["balance"]
else:
return "Insufficient balance"
def show_balance(user):
return accounts[user]["balance"]
print(
deposit(
"Ali",
500
)
)
print(
withdraw(
"Sara",
700
)
)
print(
show_balance("Ali")
)
آی آر سورس کد |