def map():
for j in range(0, screen_length//block_size[1]):
for i in range(0, screen_length//block_size[0]):
area[i][j].num = random.choices([-1, 0, 0, 0, 0])
for j in range(0, screen_length, block_size[1]):
for i in range(0, screen_length, block_size[0]):
if i>0:
area[i][j].num += area[i-1][j].num==-1
if j>0:
area[i][j].num += area[i-1][j-1].num==-1 + area[i][j-1].num==-1
if j[i]):
area[i][j].num += area[i-1][j+1].num==-1 + area[i][j+1].num==-1
if i[i][j].num += area[i+1][j].num==-1
if j>0:
area[i][j].num += area[i+1][j-1].num==-1 + area[i][j-1].num==-1
if j[i]):
area[i][j].num += area[i+1][j+1].num==-1 + area[i][j+1].num==-1
这段代码主要意思就是扫雷中的生成地图,方法就是随机生成地雷后计算每个地块周围的地雷数
当我运行它时会产生问题,如下
pygame 2.1.2 (SDL 2.0.18, Python 3.9.0)
Hello from the pygame community. https://www.pygame.org/contribute.html
Traceback (most recent call last):
File "d:\Python\minesweeper.py", line 58, in
map()
File "d:\Python\minesweeper.py", line 50, in map
area[i][j].num += area[i+1][j].num==-1
TypeError: 'bool' object is not iterable
PS C:\Users\15827>
我看了看发现跟迭代没啥关系啊,就强制int了下变成了
pygame 2.1.2 (SDL 2.0.18, Python 3.9.0)
Hello from the pygame community. https://www.pygame.org/contribute.html
Traceback (most recent call last):
File "d:\Python\minesweeper.py", line 56, in
map()
area[i][j].num += int(area[i+1][j].num==-1)
TypeError: 'int' object is not iterable
这下我没辙了。.。.
求佬指点
新年快乐🎉,望采纳,谢谢!
这个错误通常是由于在pygame代码中使用了不正确的参数导致的,可以通过以下步骤解决:
1.检查你的参数是否正确,确保它们是可迭代的,而不是布尔值。
2.检查你的代码,确保你正确地使用了迭代器,而不是直接使用布尔值。
3.重新运行你的代码,看看问题是否得到解决。
area[i][j].num += int(area[i+1][j].num==-1)应该不是右边这个判断是int还是bool的关系,而是一个数(不管是什么类型)无法被当成多个数,也就是value和range(value)的区别。
你先换种写法,将右边先算完赋值给tmp,然后area[i][j].num +=tmp 看这样改 这句是否还报错
迭代一个布尔值时出现错误。布尔值并不是可迭代对象,因此不能使用 for 循环或其他迭代器进行迭代。
不知道你这个问题是否已经解决, 如果还没有解决的话: