-
Notifications
You must be signed in to change notification settings - Fork 0
first commit #2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
first commit #2
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,66 @@ | ||
| """ | ||
| 1. Написать программу, которая будет складывать, вычитать, умножать или делить | ||
| два числа. Числа и знак операции вводятся пользователем. После выполнения | ||
| вычисления программа не должна завершаться, а должна запрашивать новые данные | ||
| для вычислений. Завершение программы должно выполняться при вводе символа '0' | ||
| в качестве знака операции. Если пользователь вводит неверный знак | ||
| (не '0', '+', '-', '*', '/'), то программа должна сообщать ему об ошибке и | ||
| снова запрашивать знак операции. | ||
| Также сообщать пользователю о невозможности деления на ноль, | ||
| если он ввел 0 в качестве делителя. | ||
| Подсказка: | ||
| Вариант исполнения: | ||
| - условие рекурсивного вызова - введена операция +, -, *, / - ШАГ РЕКУРСИИ | ||
| - условие завершения рекурсии - введена операция 0 - БАЗОВЫЙ СЛУЧАЙ | ||
| Пример: | ||
| Введите операцию (+, -, *, / или 0 для выхода): + | ||
| Введите первое число: 214 | ||
| Введите второе число: 234 | ||
| Ваш результат 448 | ||
| Введите операцию (+, -, *, / или 0 для выхода): - | ||
| Введите первое число: вп | ||
| Вы вместо трехзначного числа ввели строку (((. Исправьтесь | ||
| Введите операцию (+, -, *, / или 0 для выхода): | ||
| Решите через рекурсию. Решение через цикл не принимается. | ||
| Для оценки Отлично в этом блоке необходимо выполнить 5 заданий из 7 | ||
| """ | ||
|
|
||
|
|
||
| def int_input(txt): | ||
| try: | ||
| return int(input(txt)) | ||
| except ValueError: | ||
| return int_input(txt) | ||
|
|
||
|
|
||
| def dev_input(txt): | ||
| data = int_input(txt) | ||
| if data == 0: | ||
| print('Делить на 0 нельзя!') | ||
| return dev_input(txt) | ||
| else: | ||
| return data | ||
|
|
||
|
|
||
| def input_check(txt, poss_val): | ||
| data = input(txt) | ||
| if data in poss_val: | ||
| return data | ||
| else: | ||
| return input_check(txt, poss_val) | ||
|
|
||
|
|
||
| def calc(): | ||
| operation = input_check('Введите операцию (+, -, *, / или 0 для выхода): ', ['+', '-', '*', '/', '0']) | ||
| if operation == '0': | ||
| return | ||
| else: | ||
| first = int_input('Введите первое число: ') | ||
| if operation == '/': | ||
| second = dev_input('Введите второе число: ') | ||
| else: | ||
| second = int_input('Введите второе число: ') | ||
| print(f'Результат: {eval(f"{first} {operation} {second}")}') | ||
| calc() | ||
|
|
||
| calc() | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
выполнено