我想知道是否有人可以帮我解开这个谜团。 当我运行我的程序时,它显示错误。
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)
工作得很好
答案 0 :(得分:1)
问题在于:
spaces = stars.reverse()
reverse
与append
一样,就地操作并返回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
的列表。