列表上的“TypeError:‘NoneType’对象不可迭代”

Ale*_*lex 2 python

我想知道是否有人可以帮助我解开这个谜团。当我运行我的程序时,它显示错误。

类型错误:“NoneType”对象不可迭代

我已经测试过我尝试迭代的变量是一个列表,但它仍然说它无效并显示相同的错误。

我的代码意味着打印一个对称的星号三角形:

def iterat(num):
    for x in num:
        yield x

number=int(input("Enter Positive Number: "))

stars = list(range(number))
print(type(stars))
spaces = stars.reverse()
yeildStar = iterat(stars)
yeildSpace = iterat(spaces)

for star,space in zip(yeildStar,yeildSpace):
    print(" "*(space)+"*"*((star*2)-1))
Run Code Online (Sandbox Code Playgroud)

非常感谢。抱歉变量名不好

编辑; 感谢您的帮助。

spaces = reversed(stars)
Run Code Online (Sandbox Code Playgroud)

工作完美

Dan*_*man 10

问题就在这里:

spaces = stars.reverse()
Run Code Online (Sandbox Code Playgroud)

reverse,就像 一样append,就地运行并返回零。要返回新列表,您需要执行以下操作:

spaces = list(reversed(stars))
Run Code Online (Sandbox Code Playgroud)

但我必须说,我不明白你的iterat发电机的意义。如果你一开始就留下空格和星号作为生成器,那么你根本不需要它:

stars = range(number)
spaces = reversed(stars)
for star,space in zip(stars, spaces):
    print(" "*(space-1)+"*"*((star*2)-1))
Run Code Online (Sandbox Code Playgroud)


Sch*_*ddi 6

你的问题就在一线

spaces = stars.reverse()
Run Code Online (Sandbox Code Playgroud)

list 函数的返回值reverse()不是反转后的列表,而是None,因为反转是就地完成的。

使用这一行代替:

spaces = stars[::-1]
Run Code Online (Sandbox Code Playgroud)

这将返回一个包含 的反转值的列表stars