l2.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import sys
  2. sp = [] # Список для истории
  3. def add(a, b):
  4. return a + b
  5. def subtract(a, b):
  6. return a - b
  7. def multiply(a, b):
  8. return a * b
  9. def divide(a, b):
  10. if b == 0:
  11. return 'Ошибка: деление на 0'
  12. return a / b
  13. def calculate(n1, op, n2):
  14. if op == '+':
  15. res = add(n1, n2)
  16. elif op == '-':
  17. res = subtract(n1, n2)
  18. elif op == '*':
  19. res = multiply(n1, n2)
  20. elif op == '/':
  21. res = divide(n1, n2)
  22. else:
  23. return 'Неизвестная операция'
  24. return res
  25. def show_history():
  26. print('\n--- История ---')
  27. for i, entry in enumerate(sp[-5:], 1):
  28. print(f' {i}. {entry}')
  29. print()
  30. def calc():
  31. while True:
  32. try:
  33. n1 = float(input('Первое число: '))
  34. n2 = float(input('Второе число: '))
  35. except ValueError:
  36. print('Ошибка: введите число!')
  37. continue
  38. op = input('Операция (+, -, *, /): ')
  39. result = calculate(n1, op, n2)
  40. if isinstance(result, str):
  41. print(result)
  42. continue
  43. entry = f'{n1} {op} {n2} = {result}'
  44. sp.append(entry)
  45. print(entry)
  46. pol = input('Ещё раз? (да/history/нет): ')
  47. if pol == 'нет':
  48. break
  49. elif pol == 'history':
  50. show_history()
  51. elif pol != 'да':
  52. print('Не тот выбор')
  53. calc()