3 回答

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超4個(gè)贊
這實(shí)際上是一個(gè)非常有趣的問(wèn)題。讓我們逐步了解這里發(fā)生的事情。
i = input()
假設(shè)您的用戶輸入3
. 現(xiàn)在,正如預(yù)期的那樣i
。3
for i in range (int(i)):
首先,range(int(i))
被稱為。當(dāng)使用一個(gè)參數(shù)調(diào)用Pythonrange
時(shí),會(huì)創(chuàng)建一個(gè)從0
(包括)到該參數(shù)(不包括)的范圍。由于i
是3
,這將創(chuàng)建一個(gè)包含值0
、1
和的范圍2
。
現(xiàn)在,您開(kāi)始迭代,使用迭代變量i
。i
首先設(shè)置為0
,然后運(yùn)行代碼塊,1
,運(yùn)行代碼塊,然后2
,最后運(yùn)行代碼塊。
但是,有一個(gè)竅門(mén)。由于 Python 的作用域規(guī)則,您的迭代變量i
實(shí)際上是與全局變量相同i
的變量。因此,在迭代期間,您將全局 i
值更新為0
, then 1
, then 2
。所以當(dāng)我們開(kāi)始下一個(gè)循環(huán)時(shí):
for i in range (int(i)):
range(int(i))
is range(2)
,它創(chuàng)建了一個(gè)包含元素的范圍,0
而1
不是你想要的。
要解決此問(wèn)題,請(qǐng)將迭代變量更改為其他變量——也許j
,正如另一個(gè)答案所暗示的那樣。

TA貢獻(xiàn)1863條經(jīng)驗(yàn) 獲得超2個(gè)贊
for 循環(huán)中的 i 每次運(yùn)行時(shí)都會(huì)更新。
range(5) // gives you 0-4
i 在循環(huán)的最后一個(gè)循環(huán)中設(shè)置為 4。使用不同的變量名。

TA貢獻(xiàn)1846條經(jīng)驗(yàn) 獲得超7個(gè)贊
該變量i是全局的,該模塊中定義的任何 python 函數(shù)或類都可以訪問(wèn)該變量:
你的鍵值和你的輸入變量是一樣的scope。
因此,您輸入3并且循環(huán)開(kāi)始計(jì)數(shù),0在循環(huán)i計(jì)數(shù)到2第一個(gè)循環(huán)之后,因此循環(huán)將從以下開(kāi)始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)
只需將向上計(jì)數(shù)鍵更改為其他變量名就可以了。
為了便于理解,只需運(yùn)行:
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 關(guān)注
- 192 瀏覽
添加回答
舉報(bào)