我的代码:
b="y"
ol=[]
#operations list
OPERATIONS = ["-", "+", "*", "/"]
op = input ("Please enter your first calculation\n")
while b=="y":
ops = op.split(" ")
#add arguments to list
for x in ops:
ol+=x
if ol[1] in OPERATIONS:
#make sure operator is an operator
print()
#make sure not dividing by zero
if ol[1] == "/" and ol[2] == "0":
print("Error")
b = input("Would you like to do another calculation (y/n)?\n")
if b == "y":
op = input("Please enter your calculation:\n")
continue
else:
break
else:
n1 = float(ol[0])
n2 = float(ol[2])
#calculations done here
if ol[1] == '-':
calc = n1-n2
if ol[1] == '+':
calc = n1+n2
if ol[1] == '/':
calc = n1/n2
if ol[1] == '*':
calc = n1*n2
print("Result: " + str(calc))
b = input("Would you like to do another calculation (y/n)?\n")
if b == "y":
op = input("Please enter your calculation:\n")
continue
else:
break
else:
print("Error")
如何确保程序将新操作带到循环的开始,而不是继续打印原始计算?在
您需要在while循环中重置
ol=[]
您的计算是使用由变量
ops
生成的操作列表ol
执行的,该变量通过将输入ops
拆分成一个空格来实现。在您可以通过将
ol=[]
移动到循环中来实现:不过,还有一种更简单的方法。变量
^{pr2}$ops
包含来自split
(str.split
生成一个列表)的操作列表,然后将该值复制到列表ol
。相反,可以直接将字符串拆分为变量ol
,如下所示:这更简洁,因为您不需要额外的
ops
变量。在相关问题 更多 >
编程相关推荐