我的代码不断返回“ none”作为值,我不确定为什么

时间:2019-07-19 19:36:43

标签: python-3.x

我试图通过“使无聊的东西自动化”来完成一个项目,并且每当我运行我的代码时,我都会一无所获。

我试图包括返回函数,但随后我的整个while循环都被忽略了

tableData = [['apples','oranges','cherries','banana'],
             ['Alice','Bob','Carol','David'],
             ['dogs', 'cats', 'moose', 'goose']]

def printTable(z):
    x = 0    
    while len(z)<3:
        print(z[x:len(z)])
        x+= 1
        if x > len(z):
            break
print(printTable(tableData))

3 个答案:

答案 0 :(得分:2)

在Python中,函数默认返回None。因此,您代码中的返回值将始终为None

您的printTable函数应显式返回一个值;在适当的位置添加一个return值。

您写:

  

我试图包括返回函数,但随后我的整个while循环都被忽略了

(我不熟悉术语“ return function”;我假设您的意思是“ return statement”。)

这听起来像是将return放在错误的位置-循环内。尝试将其放在break之后的行上,缩进级别与while语句相同。这样可以确保仅在循环结束后才返回。

答案 1 :(得分:1)

您将不得不在循环外部使用return函数。

答案 2 :(得分:1)

您的While循环将被忽略,因为len(z)永远不会小于3,因此您永远不会进入while循环。另外,如果您希望函数返回某些内容,则必须明确。

我将len(z)更改为大于或等于3,然后返回x。这应该可以帮助您重回正轨:

tableData = [['apples','oranges','cherries','banana'],
             ['Alice','Bob','Carol','David'],
             ['dogs', 'cats', 'moose', 'goose']]


def printTable(z):
    x = 0
    while len(z) <= 3:
        print(z[x:len(z)])
        x = x + 1
        if x > len(z):
            break
    return x


print(printTable(tableData))