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 關注
- 203 瀏覽
添加回答
舉報
