Просто отформатировал ваш код (Python области определены с отступом, поэтому будьте осторожны при размещении кода где-нибудь), заменил 'break'
на break
, добавил break
после каждого вычисления, переместил два else
до конца соответствующей области видимости и удалили дублированные вами дополнительные условия. Теперь все работает нормально:
def add(x,y):
return x+y
def subtract(x,y):
return x-y
def divide(x,y):
return x/y
def multiply (x,y):
return x*y
print("select operation.")
print('1.add')
print('2.subtract')
print('3.divide')
print('4.multiply')
while True:
choice=input('Enter choice(1/2/3/4):')
if choice in ('1','2','3','4'):
num1=float(input("Enter first number: "))
num2=float(input("Enter second number: "))
if choice =='1':
print(num1,"+", num2,"=", add(num1,num2))
break
elif choice =='2':
print(num1,"-", num2,"=", subtract(num1,num2))
break
elif choice =='3':
print(num1,"/", num2,"=", divide(num1,num2))
break
elif choice =='4':
print(num1,"*", num2,"=", multiply(num1,num2))
break
else:
print("invalid input")
else:
print("invalid input")
Вывод с входами «1», «2» и «4»:
select operation.
1.add
2.subtract
3.divide
4.multiply
Enter choice(1/2/3/4):1
Enter first number: 2
Enter second number: 4
2.0 + 4.0 = 6.0