亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么第二個循環中的 i 比用戶給定的輸入少 1?

為什么第二個循環中的 i 比用戶給定的輸入少 1?

Go
藍山帝景 2022-01-18 13:38:08
出于某種原因,循環中的第二個 i 比用戶給定的輸入小 1。我不知道我在哪里改變了它的價值我試圖解決的一種方法是改變對于范圍內的 i (int(i))到對于范圍內的 i (int(i)+1)確實解決了問題,但不知道為什么需要它i = input()AliceShapeSequence = []BobShapeSequence = []for i in range (int(i)):        AliceShape = input()        AliceShapeSequence.append(AliceShape)    for i in range (int(i)):        BobShape = input()        BobShapeSequence.append(BobShape)    print(AliceShapeSequence)print(BobShapeSequence)除了兩個列表都有 3 個值,但 AliceShapeSequence 有 3 個,BobShapeSequence 有 2 個(取決于我在這個例子中使用的輸入 3)
查看完整描述

3 回答

?
GCT1015

TA貢獻1827條經驗 獲得超4個贊

這實際上是一個非常有趣的問題。讓我們逐步了解這里發生的事情。

i = input()

假設您的用戶輸入3. 現在,正如預期的那樣i。3

for i in range (int(i)):

首先,range(int(i))被稱為。當使用一個參數調用Pythonrange時,會創建一個從0(包括)到該參數(不包括)的范圍。由于i3,這將創建一個包含值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),它創建了一個包含元素的范圍,01不是你想要的。

要解決此問題,請將迭代變量更改為其他變量——也許j,正如另一個答案所暗示的那樣。


查看完整回答
反對 回復 2022-01-18
?
小唯快跑啊

TA貢獻1863條經驗 獲得超2個贊

for 循環中的 i 每次運行時都會更新。

range(5) // gives you 0-4

i 在循環的最后一個循環中設置為 4。使用不同的變量名。


查看完整回答
反對 回復 2022-01-18
?
喵喵時光機

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)


查看完整回答
反對 回復 2022-01-18
  • 3 回答
  • 0 關注
  • 203 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號