3.1 פונקציות פתרון
יום הולדת שמח¶
def happy_bd(name: str, age: int) -> None:
print(f"Happy birthday {name}, you'r {age}!")
happy_bd("Amit", 19)
חזקה¶
המחשבון 1¶
def main() -> None:
while True:
op = get_operation()
num1, num2 = get_numbers()
result = calculate(num1, op, num2)
def get_operation() -> str:
return input("addition or subtraction? (add/sub): ")
def get_numbers() -> tuple:
first_number = int(input("first_number> "))
second_number = int(input("second_number> "))
return first_number, second_number
def calculate(num1: int, op: str, num2: int) -> int:
if op == "add":
return num1 + num2
elif op == "sub":
return num1 - num2
if __name__ == "__main__":
main()
```
## המחשבון 2
**פתרון פשוט לתרגיל:**
```python
def main() -> None:
start_calculator()
print("bye!")
def start_calculator() -> None:
while True:
command = input("> ")
first_number, operation, second_number = command.split()
result = calculate(int(first_number), operation, int(second_number))
print(f"res: {result}")
def calculate(first_number: int, operation: str, second_number: int) -> int:
"""
calculate result by given 2 integers and operation -> can be only +,-,*,/ """
if operation == "+":
return num1 + num2
elif operation == "-":
return num1 - num2
elif operation == "*":
return num1 * num2
elif operation == "/":
return num1 / num2
if __name__ == "__main__":
main()
בעיות בפתרון
- יש המון בעיות לפתרון הפשוט הזה, מה אם נרצה להוסיף עוד 10 פעולות למחשבון, אז נצטרך להוסיף עוד 20 שורות לif הארוך בפונקציה calculate? נשמע לא ממש יעיל, בפתרון הבא, תיקנתי את הבעיה באמצעות יצירה של מילון שמכיל רשימה של כל הפעולות האפשריות וכל פעולה מצביעה על פונקציה שממשת את הפעולה בין המספרים, אחרכך אני ניגש לפונקציה ממש באמצעות משתנה:
- ואני משתמש במשתנה כדי ממש לחשב את הפעולה:
- בפתרון הבא הוספתי גם פונקציה שמסבירה כיצד להשתמש במחשבון, וגם מאפשרת לצאת מהמחשבון באמצעות הפקודה
q/פתרון מורכב לתרגיל:
def main() -> None:
welcome()
start_calculator()
print("bye!")
def welcome() -> None:
"""
welcoming the user """ welcome_message = "Amit calculator! \n" \
"syntax: > number operation number \n" \
"example: 1 + 3 \n" \
"avilable operations: +,-,*,/ \n" \
"enter /q for exit the program!"
print(welcome_message)
def start_calculator() -> None:
while True:
command = input("> ")
if command == "/q":
return
first_number, operation, second_number = command.split()
result = calculate(int(first_number), operation, int(second_number))
print(f"res: {result}")
def calculate(first_number: int, operation: str, second_number: int) -> int:
"""
calculate result by given 2 integers and operation -> can be only +,-,*,/ """ actions = {
"+": add,
"-": sub,
"*": mul,
"/": div
}
function = actions[operation]
result = function(first_number, second_number)
return result
def add(first_number: int, second_number: int) -> int:
"""
Adding 2 given parametrs and return """ return first_number + second_number
def sub(first_number: int, second_number: int) -> int:
"""
Subtracting 2 given parametrs and return """ return first_number - second_number
def mul(first_number: int, second_number: int) -> int:
"""
Multiplaing 2 given parametrs and return """ return first_number * second_number
def div(first_number: int, second_number: int) -> float:
"""
Dividing 2 given parametrs and return """ return first_number / second_number
if __name__ == "__main__":
main()
- נסו להוסיף עוד פונקצנליות למחשבון, התאמנו על כתיבת פונקציות!