这个函数和if语句没有做它应该做的事情

时间:2017-07-24 18:34:12

标签: python debugging

当我运行我的代码时,只要go等于'no',以下代码就应该继续循环使用函数:

    def use():
        item = input("What would you like to buy in bulk? ")
        purchase.append(item)
        done()

    def done():
        global go
        go = input("Is that all? ")
    use()
    if go == "no":
        use()

我不知道为什么它只运行item = input("What would you like to buy in bulk? ")两次。

任何人都可以提供帮助。

2 个答案:

答案 0 :(得分:0)

您问题的简短回答是,您只需拨打use()两次。 if不是像while那样的循环结构,并且您没有递归调用。因此,函数调用仅达到两次。

您可以通过在done()末尾拨打use(),并在use()内的条件内拨打done()来添加循环,以便生成循环。

purchase = []

def use():
    item = input("What would you like to buy in bulk? ")
    purchase.append(item)
    done()

def done():
    go = input("Is that all? ")
    if go == "no":
        use()

# Here is the first call to use() that will be reached:
use()

# This will be reached after the first time 'no' is not given to done()
print(purchase)

另请注意,我添加了一个购买清单,以便purchase.append(item)来电。

答案 1 :(得分:0)

如果你想重复一些事情,请使用循环,例如while

def input_purchases():
    purchase = []
    while True:
        item = input("What would you like to buy in bulk? ")
        purchase.append(item)
        go = input("Is that all? ")
        if go != "no":
            break
    return purchase

purchase = input_purchases()