我是一名高中生,正在学习python的在线课程,其中一个作业是创建一个类似于fizz buzz的函数,除了“fizz”和“buzz”之外,它们只使用“3”和“5”。我写了一个函数,但不幸的是,它完全失败了,根本不起作用。我一直很难弄清楚应该输入什么而不是“对于范围内的x(101):”,我想这就是我的问题所在。任何指点/指引都会很有帮助,我完全迷路了。你知道吗
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启动函数的(我应该意识到这一点)。但是当我把它拿出来的时候,输出变成了无。我是做错了什么,还是误解了?谢谢你的快速回答,不过,我还是很没有经验
出现新错误的代码:
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)
所以,有几件事要注意。首先,
range(n)
函数返回一个遍历0、1、2、…、n-1的迭代器。因此,您将在代码中迭代的第一个值将是0。想想你的for循环将如何处理这个问题。你知道吗第二,因为您将
x
指定为从range
函数迭代的值,所以您从来没有实际测试传递到函数中的x
。你知道吗第三,注意循环中if-elif-else树的每个分支都有一个
return
语句,因此循环在返回值之前只循环一次。这有点违背了使用循环的目的。你知道吗最后,确保您知道
0 % n
是如何计算的。想一想你的程序为什么会返回student_func(1) = 'threefive'
,看看你能不能得出一个结论。你知道吗问题是,测试函数的“tester”给了函数一个数字/参数-x。但是,您所做的是从0到100测试函数。这个问题并不要求你用0到100之间的数字来测试你的函数。因此,应该删除for循环。你知道吗
为什么要给输出“三五”?函数首先在循环中测试数字0。它满足第一个if语句,并返回(因此它退出函数)。你知道吗
现在,您的代码正在循环遍历从0到100的每个值,并返回第一个值(0)是否可被3和5整除,当然是这样。函数只要求您检查一个值是否可以被3整除,或者5整除,或者两者都可以整除。你为什么需要一个回路?你知道吗
相关问题 更多 >
编程相关推荐