如何回到python循环的开头?

时间:2016-01-11 13:51:18

标签: python for-loop

我的代码:

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")

如何确保程序将新操作带到循环开头而不是继续打印原始计算?

2 个答案:

答案 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包含splitstr.split生成列表)中的操作列表,然后您将此值复制到列表ol中。相反,您可以将字符串直接拆分为变量ol,如下所示:

b="y"

#operations list
OPERATIONS = ["-", "+", "*", "/"]

op = input ("Please enter your first calculation\n")

while b=="y":
    ol = op.split(" ")

这是更整洁的,因为您不需要额外的ops变量。