嘶嘶声难以解决

时间:2018-06-21 02:57:59

标签: python fizzbuzz

我是一名高中生,正在学习python在线课程,其中的一项任务是创建类似于fizz buzz的功能,除了使用“三”和“ fizz”代替“ fizz”和“ buzz” “五”。我编写了一个函数,但不幸的是,它完全失败了,根本没有完成它的工作。我一直很难找出要输入的内容,而不是“对于range(101)中的x:”,我想这就是我的问题所在。任何指针/指导都将非常有帮助,我完全迷失了。

The instructions are here,这是我的代码:

def student_func(x):
    for x in range(101):
        if x % 3 == 0 and x % 5 == 0:
            return('threefive')
        elif x % 3 == 0:
            return('three')
        elif x % 5 == 0:
            return('five')
        else:
            return x

编辑:一些人建议我删除循环,因为它是从0开始的功能(我应该意识到)。但是,当我将其取出时,输出变为None。我是在做其他错误的事情,还是我误会了?不过,感谢您的快速解答,我还是没有经验

具有新错误的代码:

def student_func(x):
    if x % 3 == 0 and x % 5 == 0:
        return('threefive')
    elif x % 3 == 0:
        return('three')
    elif x % 5 == 0:
        return('five')
    else:
        print(x)

4 个答案:

答案 0 :(得分:0)

因此,需要注意一些事项。首先,range(n)函数返回一个迭代器,该迭代器将经历0、1、2,...,n-1。因此,您要在代码中迭代的第一个值将为0。请考虑您的for循环将如何处理它。

第二,因为您要分配x作为从range函数迭代过来的值,所以您实际上从未测试过传递到函数中的x

第三,请注意,循环中if-elif-else树的每个分支都有一个return语句,因此该循环在返回值之前只会进行一次。这种破坏了使用循环的目的。

最后,请确保您了解0 % n的评估方式。考虑一下事情,看看是否可以得出有关程序为何返回student_func(1) = 'threefive'的结论。

答案 1 :(得分:0)

问题是,测试您的函数的“测试器”为函数提供了数字/参数-x。但是,您正在做的事情是测试0-100的函数。问题不要求您使用0-100的数字进行测试。因此,您应该删除for循环

为什么给输出“ threefive”?好吧,该函数首先在循环中测试数字0。它满足第一个if语句,然后返回(因此它退出了函数)。

答案 2 :(得分:0)

现在,您的代码正在循环遍历从0到100的每个值,并返回第一个值(0)是否可以被三和五整除(当然是)。该功能仅要求您检查单个值是否可被三个或五个整除。为什么需要循环?

答案 3 :(得分:0)

您的函数不应该循环;应该只检查作为参数传入的单个值。教师功能将通过各种输入调用您的功能。

取出for循环语句,它应该可以工作。