为什么不循环呢?

时间:2016-03-24 16:34:07

标签: python loops while-loop

为什么这段代码不循环返回产品字符串中的每个字符?它只返回第一个并停止。

def fix_machine(debris, product):
    n = 0
    while debris.find(product[n]) != -1:
        return product[n]
        n = n + 1

抱歉noob问题

3 个答案:

答案 0 :(得分:0)

使用return时,会立即终止该函数并返回返回的值。如果要从函数返回多个值,可以使用yield。另请注意,您应该检查n是否仍然在product的范围内。

def fix_machine(debris, product):
    n = 0
    while n < len(product) and debris.find(product[n]) != -1:
        yield product[n]
        n = n + 1

这使它成为一个生成器功能。您可以循环条目,或者在列表中收集它们:

for d in fix_machine("some characters", "some different characters"):
    print(d)

print(list(fix_machine("some characters", "some different characters")))

输出将是例如['s', 'o', 'm', 'e', ' ']

如果您发表评论,如果您想要打印产品(如果可以在碎片中找到所有字符),您可以尝试这样做:

def fix_machine(debris, product):
    if all(c in debris for c in product):
        print(product)

答案 1 :(得分:0)

我不确定python中的语法,但我熟悉的语言中的return通常会让块返回方法调用块。

你想要的是:

method
    while true
        build array
    end while
    return array
end method

答案 2 :(得分:0)

这是预期的。 return将停止执行您的功能。如果您愿意,可以打印它:

def fix_machine(debris, product):
    n = 0
    while debris.find(product[n]) != -1:
        print product[n]
        n = n + 1