На данный момент я на телефоне, так что все в подробностях описать не могу.
И так, сначала лучше всего напишите функции и переназовите их, чтобы не путаться:
def get_num1():
while True:
num_1 = input('Введите первое целое положительное число: ')
if num_1.isdigit():
return int(num_1)
else:
print('Вы ввели не число!')
def get_num2():
while True:
num_2 = input('Введите второе целое положительное число: ')
if num_2.isdigit():
return int(num_2)
else:
print('Вы ввели не число!')
Там где
return
подставляем
int(...)
дабы возвращать число, а не строку(string). Также в python после двоеточий лучше переходите на след строку, даже если это всего лишь
return
,
так принято видете ли :)
После чего мы задаем переменным полученные цифрам:
num1 = get_num1()
num2 = get_num2()
Далее заключаете в функцию только получение "эффекта", тоже самое, что и с
get_num1
или
get_num2
(спасибо
dim5x, что немного сократил длительность моей боли):
def get_effect():
while True:
effect = input("Напишите что вы хотите сделать, отнять, прибавить, умножить,разделить, возвести в степень, целое деление, остаток от деления: ")
if effect in ("+", "-", "*", "/", "**", "//", "%"):
return effect
else:
print('Нету такого действия!')
Потом опять же задаем переменной полученный "эффект":
effect = get_effect()
Далее конечно решение:
if effect == "+" :
print(num_1 + num_2)
# + - сложение
elif effect == "-":
print(num_1 - num_2)
# - — вычитание
elif effect == "*":
print(num_1 * num_2)
# * — умножение
elif effect == "/":
print(num_1 / num_2)
# / — деление
elif effect == "**":
print(num_1 ** num_2)
# ** — возведение в степень
elif effect == "//":
print(num_1 // num_2)
# // — целочисленное деление
elif effect == "%":
print(num_1 % num_2)
# % — остаток от деления
Советую внимательно относится даже к мелочам. Так же рекомендую почитать
этот документ о написании чистого кода. Возможно я не придерживался к нему в этом ответе, но я все же на телефоне))