Python:带循环的函数

2024-05-15 02:23:36 发布

您现在位置:Python中文网/ 问答频道 /正文

def shampoo_instructions(num_cycles):

    if num_cycles < 1:
        print("Too few.")
    
    elif num_cycles > 4:
        print("Too many.")
        
    else:
        for a in num_cycles:
            print(num_cycles,": Lather and rinse.")
          
    print("Done.")
    
    return shampoo_instructions(num_cycles)

shampoo_instructions(2)

此代码的错误是

Traceback (most recent call last):
  File "main.py", line 18, in 
    shampoo_instructions(2)
  File "main.py", line 11, in shampoo_instructions
    for a in num_cycles:
TypeError: 'int' object is not iterable

如果有人知道我做错了什么,我会非常感激的


Tags: inpyforifmaindeflinenum
2条回答

for a in num_cycles:不起作用,因为num_cycles是一个数字,并且for循环没有可迭代的内容range(num_cycles)将从num_cycles变为for循环可以迭代的[0,1,…num_循环]列表

正如@smarx所述,您需要删除该行:

return shampoo_instructions(num_cycles)

这是因为您编写了一个递归函数,在该函数中,它将在一段时间内不断调用自己

您正在混合递归和迭代。 你将获得一个无止境的循环

还有,你不能这样做

for a in b:

如果两者都是整数。你必须使用

for a in xrange(0, b):

在b上迭代。 大多数人不在乎他们使用的是xrange还是range,但对于循环,xrange稍微快一点

这是你的解决方案

def shampoo_instructions(num_cycles):

    if num_cycles < 1:
        print("Too few.")

    elif num_cycles > 4:
        print("Too many.")

    else:
        for a in xrange(0, num_cycles):
            print(num_cycles,": Lather and rinse.")

    print("Done.")


shampoo_instructions(2)

相关问题 更多 >

    热门问题