我是一名高中生,正在学习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)
答案 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
循环语句,它应该可以工作。