python-3.x - 写一个简单的计算器。代码在重复自己,我不知道为什么
问题描述
写一个简单的计算器。需要做加法、减法、乘法、浮点除法、整数除法、模数和指数。对于除法,代码重复并要求 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 将自上而下阅读并完全按照您的要求执行。你告诉它输入四次,所以它会输入四次。如果您不想要这个,那么您需要更改您的代码。
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")
还有一种方法可以显着缩短上面的代码,但我相信这样一个激烈的步骤会让你感到困惑并可能阻止你。
推荐阅读
- java - Wiiremock http失败错误
- c# - 无法通过 C# 使用 Selenium 检查复选框控件
- python - 如何使用带有 Flask-AppBuilder 的自定义表单更改选择字段的默认选择?
- authentication - 401.2 出现在本地主机上
- actionscript-3 - 调整窗口大小 AS3
- django - Django ManyToManyField 如何添加 created_at 和 updated_at
- java - 如何单击 href="javascript:void(0)" 链接并将路径传递给打开的窗口(Selenium)
- c# - Viewmodel 在命名空间中不存在
- android - 为什么 TFS 说我需要接受许可证才能进行 android 构建?
- ios - 多个命令产生错误 xcode 10