【发布时间】:2020-08-12 03:57:15
【问题描述】:
class Field(object):
def __init__(self, states):
self.states = states
states = list(reversed(states))
self.cells = {}
print('debug1')
for y in range(3, 0):
for x in (1, 4):
self.cells[(x, y)] = states.pop()
print(self.cells[(x, y)])
print('debug2')
my_field = Field('_XXOO_OX_')
print(my_field.cells)
输出是
调试1
{}
但我希望 dict my_field.cells 不为空,并且应该打印出“debug2”。 __init__ 中的 for 循环似乎没有被执行。
Python 版本:3.7.3
【问题讨论】:
-
for y in range(3, 0):不会像您认为的那样做。当range被赋予 2 个参数时,第一个是迭代的开始,第二个是迭代的结束。 -
用
for y in range(3, 0, -1)替换for y in range(3, 0) -
从 2 到 0 你需要
range(2, -1, -1)。 -
print(list(range(3, 0)))=>[]
标签: python python-3.x