Python:带循环的函数

时间:2016-10-01 05:00:13

标签: loops

ExtensionKey[T <: Extension]()(implicit m: ClassTag[T])

此代码的错误是

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)

如果有人知道我做错了什么,我真的很感激!谢谢 :)。对不起,如果这对编码来说真的很蠢!

2 个答案:

答案 0 :(得分:0)

for a in num_cycles:无法正常工作,因为num_cycles是一个数字,而for循环没有任何内容可以循环播放。 range(num_cycles)将从num_cycles更改为[{1}}循环可以迭代的[0,1,... num_cycles]列表。

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

for

这是因为你编写了一个递归函数,它将继续调用自身。

答案 1 :(得分:0)

您正在混合递归和迭代。 你将获得无限循环!

另外,你做不到

for a in b:

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

for a in xrange(0, b):

迭代b。 大多数人都不关心他们是使用xrange还是范围,但是对于循环,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)