为什么这段代码不循环返回产品字符串中的每个字符?它只返回第一个并停止。
def fix_machine(debris, product):
n = 0
while debris.find(product[n]) != -1:
return product[n]
n = n + 1
抱歉noob问题
答案 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