嘶嘶声困难

2024-10-04 09:23:56 发布

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

我是一名高中生,正在学习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)

Tags: and函数代码returnifdefelsestudent
3条回答

所以,有几件事要注意。首先,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整除,或者两者都可以整除。你为什么需要一个回路?你知道吗

相关问题 更多 >