3 回答
TA贡献1827条经验 获得超4个赞
这实际上是一个非常有趣的问题。让我们逐步了解这里发生的事情。
i = input()
假设您的用户输入3. 现在,正如预期的那样i。3
for i in range (int(i)):
首先,range(int(i))被称为。当使用一个参数调用Pythonrange时,会创建一个从0(包括)到该参数(不包括)的范围。由于i是3,这将创建一个包含值0、1和的范围2。
现在,您开始迭代,使用迭代变量i。i首先设置为0,然后运行代码块,1,运行代码块,然后2,最后运行代码块。
但是,有一个窍门。由于 Python 的作用域规则,您的迭代变量i实际上是与全局变量相同i的变量。因此,在迭代期间,您将全局 i值更新为0, then 1, then 2。所以当我们开始下一个循环时:
for i in range (int(i)):
range(int(i))is range(2),它创建了一个包含元素的范围,0而1不是你想要的。
要解决此问题,请将迭代变量更改为其他变量——也许j,正如另一个答案所暗示的那样。
TA贡献1846条经验 获得超7个赞
该变量i是全局的,该模块中定义的任何 python 函数或类都可以访问该变量:
你的键值和你的输入变量是一样的scope。
因此,您输入3并且循环开始计数,0在循环i计数到2第一个循环之后,因此循环将从以下开始2:
i = input()
AliceShapeSequence = []
BobShapeSequence = []
for x in range (int(i)):
AliceShape = input()
AliceShapeSequence.append(AliceShape)
for x in range (int(i)):
BobShape = input()
BobShapeSequence.append(BobShape)
print(AliceShapeSequence)
print(BobShapeSequence)
只需将向上计数键更改为其他变量名就可以了。
为了便于理解,只需运行:
i = 3
AliceShapeSequence = []
BobShapeSequence = []
for i in range (int(i)):
AliceShape = i
AliceShapeSequence.append(AliceShape)
print("first loop: i = {0} after {1} loop cycle".format(i, i+1))
for i in range (int(i)):
BobShape = i
BobShapeSequence.append(BobShape)
print("second loop: i = {0} after {1} loop cycle".format(i, i+1))
print(AliceShapeSequence)
print(BobShapeSequence)
- 3 回答
- 0 关注
- 257 浏览
添加回答
举报
