我的代码:
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")
如何确保程序将新操作带到循环开头而不是继续打印原始计算?
答案 0 :(得分:0)
您需要在while循环中重置ol=[]
答案 1 :(得分:0)
您的计算是使用从变量ol
生成的操作列表ops
执行的,该操作是通过空格分割输入ops
来完成的。
您可以通过将ol=[]
移动到循环中来实现此目的:
b="y"
# Remove ol=[]
#operations list
OPERATIONS = ["-", "+", "*", "/"]
op = input ("Please enter your first calculation\n")
while b=="y":
ol = [] # Add here
然而,有一种更简单的方法。变量ops
包含split
(str.split
生成列表)中的操作列表,然后您将此值复制到列表ol
中。相反,您可以将字符串直接拆分为变量ol
,如下所示:
b="y"
#operations list
OPERATIONS = ["-", "+", "*", "/"]
op = input ("Please enter your first calculation\n")
while b=="y":
ol = op.split(" ")
这是更整洁的,因为您不需要额外的ops
变量。