2013-01-15 202 views
2

Im做書的鍛鍊在Python編程一回:一個簡介比較科學:Python循環:額外打印?

for i in [1,3,5,7,9]: 
    print(i, ":", i**3) 
print(i) 

這種打印出

1:1 
3:27 
5:125 
7:343 
9:729 
9 

我的問題是,爲什麼它打印額外的9?最後的循環打印是不是9:729? 它是什麼做的

print(i, ":", i**3) 

,因爲如果我只是把:

for i in [1,3,5,7,9]: 
    print(i) 

它只是打印提前

1 
3 
5 
7 
9 

感謝,因爲我有其他人來幫我! :)

回答

3

在python for循環中,循環的「body」是縮進的。

因此,在你的情況下,print(i, ":", i**3)是「身體」。這將打印i, ":", i**3i每個值,從1開始,並在9

結束作爲循環執行,它改變了i下一個項目在列表中的值。

一旦循環終止,它將繼續執行下一行代碼,它完全獨立於for循環。所以,你在for循環之後有一個命令,它是print(i)。由於i最後設置爲9,因此該命令基本上意味着print(9)

你想要的是:

for i in [1,3,5,7,9]: 
    print(i, ":", i**3) 
+0

謝謝!我現在明白了!這是我正在尋找的信息豐富的答案。我想我需要休息一下,掛上相對容易的東西! –

+0

不用擔心!堅持下去......一開始壓倒性的,但它變得更容易 – sgarza62

2

在最後一行的打印(我)..............

1

分配給i的最後一個值是9,所以你的最後一行referes這個值在循環內發生的分配。雖然9:729是印刷的最後一件事,但這不是最後一項任務。

編輯:

爲什麼不將其打印是這樣的:1:1 3:27 3 5:125 5 7:343 7 9:729 9?

這將打印本,如果你的代碼是縮進,看起來像這樣:

for i in [1,3,5,7,9]: 
    print(i, ":", i**3) 
    print(i) 

在最後一行缺少壓痕使其外面愛上循環。

+0

對於每次循環,從列表中的下一個值分配給'i'。當循環終止時,'i'仍然是分配給它的列表中最後一項的有效變量。打印行爲('print(i,「:」,i ** 3)'不會影響'i'的值。因爲最後一行沒有縮進,所以不會像您在註釋中那樣打印。 Python用於確定代碼是否屬於循環。 – woemler

+0

我感謝所有幫助! –