首页 > 解决方案 > 写一个简单的计算器。代码在重复自己,我不知道为什么

问题描述

写一个简单的计算器。需要做加法、减法、乘法、浮点除法、整数除法、模数和指数。对于除法,代码重复并要求 4 个数字,尽管我已指定它只要求 2。


print("Select operation.")
print("1.Add")
print("2.Subtract")
print("3.Multiply")
print("4.Float Division")



choice = input("Enter choice(1/2/3/4):")

num1 = int(input("Enter first number: "))
num2 = int(input("Enter second number: "))
fnum1 = float(input("Enter first number: "))
fnum2 = float(input("Enter second number: "))

if choice == '1':
   print(num1,"+",num2,"=", add(num1,num2))

elif choice == '2':
   print(num1,"-",num2,"=", subtract(num1,num2))

elif choice == '3':
   print(num1,"*",num2,"=", multiply(num1,num2))
elif choice == '4':
    print(fnum1, "/",fnum2,"=", divide(fnum1,fnum2))
else:    
 print("Invalid")


当我运行模块并选择部门时,我想输入我的 2 个数字并得到答案。出于某种原因,它要求输入 num1、num2、fnum1 和 fnum2。

标签: python-3.x

解决方案


操作顺序我的家伙。Python 将自上而下阅读并完全按照您的要求执行。你告诉它输入四次,所以它会输入四次。如果您不想要这个,那么您需要更改您的代码。

print("4.Float Division")
choice = input("Enter choice(1/2/3/4):")
if choice == '1' or choice == '2':
    num1 = int(input("Enter first number: "))
    num2 = int(input("Enter second number: "))
else:
    fnum1 = float(input("Enter first number: "))
    fnum2 = float(input("Enter second number: "))

if choice == '1':
   print(num1,"+",num2,"=", add(num1,num2))

elif choice == '2':
   print(num1,"-",num2,"=", subtract(num1,num2))

elif choice == '3':
   print(num1,"*",num2,"=", multiply(num1,num2))
elif choice == '4':
    print(fnum1, "/",fnum2,"=", divide(fnum1,fnum2))
else:    
 print("Invalid")

话虽如此,在编程中您应该遵循DRY原则。(即不要重复自己)

print("4.Float Division")
choice = input("Enter choice(1/2/3/4):")
num1 = int(input("Enter first number: "))
num2 = int(input("Enter second number: "))

if choice == '1' or choice == '2':
    num1, num2 = int(num1), int(num2)
else:
    num1, num2 = float(num1), float(num2)

if choice == '1':
   print(num1,"+",num2,"=", add(num1,num2))

elif choice == '2':
   print(num1,"-",num2,"=", subtract(num1,num2))

elif choice == '3':
   print(num1,"*",num2,"=", multiply(num1,num2))
elif choice == '4':
    print(num1, "/",num2,"=", divide(num1,num2))
else:    
 print("Invalid")

还有一种方法可以显着缩短上面的代码,但我相信这样一个激烈的步骤会让你感到困惑并可能阻止你。


推荐阅读