将列表与输入进行比较

compare list with input

def calculate():
    operator = input("What operator do you wanna use(*,/,+,-)? ")
    possible_op = ["*", "+", "-", "/"]
    if not operator == possible_op:
        calculate()
    number_1 = float(input("What is your first number? "))
    if number_1 != float:
            calculate()
    number_2 = float(input("What is your second number? "))
    if number_2 != float:
            calculate()
    
    if operator == "+":
        print(number_1 + number_2) 
    elif operator == "-":
        print(number_1 - number_2) 
    elif operator == "*":
        print(number_1 *  number_2) 
    elif operator == "/":
        print(number_1 / number_2) 
    else:
        print("Wrong Input")
        calculate()

    again()

def again():
    print("Do you wanna calculate again? ")
    answer = input("(Y/N) ").lower()
    if answer == "y":
        calculate()
    elif answer == "n":
        exit
    else:
        print("Wrong Input")
        again()

calculate()

有没有人知道为什么我的代码总是一次又一次地询问操作员问题,即使有一个正确的操作员?我是否必须更改列表的名称和比较的输入或

这段代码中有很多错误,但你已经成功地使用了你所知道的并且在正确的轨道上,所以我不会给你一个解决方案,我现在只是回顾一下。

大多数情况下,我建议让您的计算函数保持简单,并在其他地方处理循环(而不是递归)。

def calculate():
    operator = input("What operator do you wanna use(*,/,+,-)? ")
    possible_op = ["*", "+", "-", "/"]
    if not operator == possible_op:  # this will never be true because operator is a string, use `not in`
        calculate()  # you probably don't want to run calculate again, maybe return early
    number_1 = float(input("What is your first number? "))
    if number_1 != float:  # number_1 is a float it's not the `float` type so always True
            calculate()  # return
    number_2 = float(input("What is your second number? "))
    if number_2 != float:  # same as number_1 above
            calculate()  # return
    
    if operator == "+":  # this block is good, simple and to the point
        print(number_1 + number_2) 
    elif operator == "-":
        print(number_1 - number_2) 
    elif operator == "*":
        print(number_1 *  number_2) 
    elif operator == "/":
        print(number_1 / number_2) 
    else:
        print("Wrong Input")  # here you also want to retry
        calculate()  # but not by recursing

    again()  # and definitely not call again

def again():
    print("Do you wanna calculate again? ")
    answer = input("(Y/N) ").lower()
    if answer == "y":
        calculate()
    elif answer == "n":
        exit  # what is this exit ?
    else:
        print("Wrong Input")
        again()  # also don't recurse this, loop if you want

calculate()