Python 意外循环输出
这段代码输出00000000,但我认为它会输出00000011,因为最后2个索引符合if标准Python 意外循环输出,python,Python,这段代码输出00000000,但我认为它会输出00000011,因为最后2个索引符合if标准 import pygame numbers = [pygame.Color("#FFFFFF"), pygame.Color("#FFFFFF"), pygame.Color("#FFFFFF"), pygame.Color("#FFFFFF"), pygame.Color("#FFFFFF"),
import pygame
numbers = [pygame.Color("#FFFFFF"),
pygame.Color("#FFFFFF"),
pygame.Color("#FFFFFF"),
pygame.Color("#FFFFFF"),
pygame.Color("#FFFFFF"),
pygame.Color("#FFFFFF"),
pygame.Color("#FF0000"),
pygame.Color("#FF0000")]
x = 0
binary = ""
for number in numbers:
print(number)
if numbers[x] == pygame.Color("#FF0000"):
binary += "1"
elif numbers[x] == pygame.Color("#FFFFFF"):
binary += "0"
print("after: ", binary)
将循环更改为:
for number in numbers:
print(number)
if number == pygame.Color("#FF0000"):
binary += "1"
elif number == pygame.Color("#FFFFFF"):
binary += "0"
number[x]
将始终指向第一个元素,因为您没有递增x
。因此,将numbers[x]
更改为numbers
如果要使用索引,可以如下更改代码:
binary = ""
for x, number in enumerate(numbers):
print(number) # number = numbers[x]
if numbers[x] == pygame.Color("#FF0000"):
binary += "1"
elif numbers[x] == pygame.Color("#FFFFFF"):
binary += "0"
print("after: ", binary)
你永远不会改变x的值。所以每次,数字[x]都是数字[0],这就是pygame.Color(“#FF0000”)。您正在混合两种循环方法。只要检查number==什么。您总是检查数组的第一个元素,因为您不更改x值,所以第二个条件永远不会为真。只是说,如果您不需要使用索引,只需要使用值,就不应该使用索引。是的,当然。。。但有时,只更改for循环的行并添加枚举比更改for循环中的所有变量更容易。无论如何,我的只是一个建议和你答案的替代品(绝对正确)。是的,我意识到我的错误,我不是在增加x,但实际上也不需要使用x进行迭代。谢谢你的帮助。