这个pyschools练习有什么问题?

2024-05-13 22:44:46 发布

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

在Pyschool递归练习中,有一个问题是打印两个give参数(包括那些参数)之间的数字。。我在递归方面很弱,但经过一定的尝试,我做到了。。但是它仍然抛出错误,尽管预期结果和返回的结果完全相同。。在

def numbersInbetween(a, b):
    if b == 0:
        return "Invalid"
    if a == b:
        return a
    else:

        return str(a)+ "," + str(numbersInbetween(a+1, b)) 

输出图像文件:

enter image description here

我甚至尝试在第二条if语句中对输出进行字符串格式设置,但这只会引发一个错误,如“检查代码中的无限循环”。在


Tags: 字符串参数returnifdef错误图像文件数字
2条回答

如果b==0,则将行改为ifb<;0b==0

    def numbersInbetween(a, b):
        if b < a or b == 0:
            return "Invalid"
        if a == b:
            return str(a)  
        else:
            return str(a) + ',' + numbersInbetween(a+1, b)

a == b时返回a,而不是str(a)。测试人员需要一个字符串,而您给了它一个整数。在

您可能还想测试b是否小于b,否则您可能会无休止地递归(好吧,直到达到递归极限):

if b < a:
    return "Invalid"

如果b = 0,只要a小于或等于b,函数仍将工作。numbersInbetween(5, 0)返回"Invalid",不是因为b0,而是因为b小于{};在这种情况下,当你增加a时,你永远不会到达{}。在

确保函数始终返回字符串实际上会稍微简化代码:

^{pr2}$

相关问题 更多 >