" TypeError:' NoneType'对象不可迭代"超过名单

时间:2016-09-20 15:01:53

标签: python

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

  

TypeError:' 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))

非常感谢你。抱歉,错误的变量名称

EDIT;谢谢您的帮助。

spaces = reversed(stars)

工作得很好

2 个答案:

答案 0 :(得分:1)

问题在于:

spaces = stars.reverse()

reverseappend一样,就地操作并返回nil。要返回新列表,您需要执行以下操作:

spaces = list(reversed(stars))

我必须说,但我不明白你的iterat发电机的意义。如果你首先将空间和星星留作生成器,你根本就不需要它:

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

答案 1 :(得分:0)

你的问题在

spaces = stars.reverse()

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

请改用此行:

spaces = stars[::-1]

这将返回一个反转值为stars的列表。