Python 实现同样目标的更好方法?
这是最有效的方法吗?这是可行的,但我想知道是否有更好的方法来做同样的事情。选择操作后的嵌套if看起来不是很干净,即使它可以工作Python 实现同样目标的更好方法?,python,python-3.x,Python,Python 3.x,这是最有效的方法吗?这是可行的,但我想知道是否有更好的方法来做同样的事情。选择操作后的嵌套if看起来不是很干净,即使它可以工作 des = " " while des != "n" or "no": # Operators add = "+" minus = "-" multiply = "*" divide = "/" # Prompt n1 = in
des = " "
while des != "n" or "no":
# Operators
add = "+"
minus = "-"
multiply = "*"
divide = "/"
# Prompt
n1 = int(input("1: "))
operator_selection_prompt = input('Select operation (+, -, *, /): ')
n2 = int(input("2: "))
if(operator_selection_prompt == add):
r = n1 + n2
print(r)
des = input("Re-Run? (y/n): ")
if des not in ('n', 'no', 'y', 'yes'):
print('no valid')
break
elif(operator_selection_prompt == minus ):
r = n1 - n2
print(r)
des = input("Re-Run? (y/n): ")
if des not in ('n', 'no', 'y', 'yes'):
print('no valid')
break
elif(operator_selection_prompt == multiply):
r = n1 * n2
print(r)
des = input("Re-Run? (y/n): ")
if des not in ('n', 'no', 'y', 'yes'):
print('no valid')
break
elif(operator_selection_prompt == divide):
r = n1 // n2
print(r)
des = input("Re-Run? (y/n): ")
if des not in ('n', 'no', 'y', 'yes'):
print('no valid')
break
检查一下以供参考。在你的情况下是这样的:
导入操作符
des=“”
操作={
“+”:operator.add,
“-”:operator.sub,
“/”:operator.truediv,
“*”:operator.mul,
}
而des!=“n”或“否”:
n1=int(输入(“1”))
运算符\选择\提示=输入('选择操作(+、-、*、/):')
n2=int(输入(“2:”)
打印(操作[操作员选择提示](n1,n2))
des=输入(“重新运行(y/n):”)
仅执行一次打印和测试中断。大写的常量。添加else,以便始终定义r。删除了不必要的括号
@tbjorch更进一步,但这看起来像是初学者的练习,所以我将把它留给基本的东西
des = " "
while des != "n" or "no":
# Operators
ADD = "+"
MINUS = "-"
MULTIPLY = "*"
DIVIDE = "/"
# Prompt
n1 = int(input("1: "))
operator_selection_prompt = input('Select operation (+, -, *, /): ')
n2 = int(input("2: "))
if operator_selection_prompt == ADD:
r = n1 + n2
elif operator_selection_prompt == MINUS:
r = n1 - n2
elif operator_selection_prompt == MULTIPLY:
r = n1 * n2
elif operator_selection_prompt == DIVIDE:
r = n1 // n2
else:
r = None # needed otherwise entering "%" would cause r to be undefined for print(r)
print(r)
des = input("Re-Run? (y/n): ")
if des not in ('n', 'no', 'y', 'yes'):
print('no valid')
break
我会这样做:
while True :
n1 = input ("1: ")
operator = input ('Select operation (+, -, *, /): ')
n2 = input ("2: ")
if n1.isnumeric () and n2.isnumeric () and operator in ('+', '-', '*', '/') :
print (eval (f'{n1}{operator}{n2}'))
else : print ('Error!')
des = input("Re-Run? (y/n): ")
if des not in ('y', 'yes', 'Y', 'Yes') :
break
这应该是。考虑到代码中直接错误的数量,我会说“不,这不是最佳的”,“最有效的方法”-做什么?我想你正在寻找类似的东西。检查这个问题的答案@orlp谢谢。在这里它可以工作,但是如果我输入n以外的任何东西,它将根据while循环的条件准确地继续。我只是想根据你的需要进行编辑,我只是把重点放在了elifs上,让它更苗条。编辑的答案删除如果与中断,因为while循环处理该部分,使它更短的兄弟!谢谢。这也行,谢谢。