【问题标题】:Writing a simple calculator. Code is repeating itself and I have no idea why写一个简单的计算器。代码在重复自己,我不知道为什么
【发布时间】:2019-04-15 19:51:59
【问题描述】:

编写一个简单的计算器。需要做加法、减法、乘法、浮点除法、整数除法、模数和指数。对于除法,代码重复并要求 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。

【问题讨论】:

  • 因为这正是您的代码所说的那样?你为什么希望它那样做 - 没有任何东西可以阻止它
  • 如果您调用input 四次,您的程序将要求输入四次。使用num1 定义fnum1 而不是再次调用input

标签: python-3.x


【解决方案1】:

操作顺序我的家伙。 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")

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

【讨论】:

  • 非常感谢您的回复。我是这方面的初学者,在此之前的编程经验为零。我现在正在尝试运行它,它不会打印我的任何语句的输出。我不明白我错过了什么
  • 你实现了addsubtract等方法吗?还是你的意思是num1 + num2 等等......
  • 如果 python 有 case 语句,我建议使用 case 语句,但由于你需要一个 dict 来实现它,我同意你不再混淆 OP 的决定。对于那些想要进一步调查的人,请查看这个 SO 答案stackoverflow.com/questions/60208/…
  • 我会使用 str 来操作不需要 ifswitch(例如 Turn string into operator)的解决方案。
  • 我现在很困惑,这太疯狂了。糟透了,我这门课要不及格了,我什么都不懂。感谢您的帮助,我只是一个失败的事业。
猜你喜欢
  • 1970-01-01
  • 2019-11-12
  • 2012-05-19
  • 1970-01-01
  • 2016-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多