2017-06-13 182 views
-1

請向我解釋變量「count」如何自動將它自己與字符串的每個索引「Hello!」關聯起來Python基本循環迭代

greeting = 'Hello!' 
count = 0 

for letter in greeting: 
    count += 1 
    if count % 2 == 0: 
     print(letter) 
    print(letter) 

print('done') 

基本上,以下問題詢問字符串每個字母打印的次數。在檢查討論板後,我發現邏輯是輸出是H = [1],e = [2],l = [3],l = [4],o = [5]! = [6]。事情是,我不明白爲什麼會發生這種情況。

+2

你是什麼意思的「自動關聯」辦???它只是從0計數。 –

+0

'H = [1]'???什麼?同樣,循環的每次迭代'count'變量都會增加1.簡單地通過將1加到循環體的第一行。 –

+0

'在ltr中打招呼[:: 2]:print(ltr)'會打印每一個字母......也......不太清楚這個程序的重點是什麼 –

回答

0

你問你的代碼將打印:

請向我解釋如何變量,「伯爵」,自動將自己用字符串,各項指標聯繫起來「你好!」

但是在你的代碼中,不需要使用if語句。並且您應該將索引或計數添加到字符串的項目附近。 簡單的代碼應該是這樣的:

greeting = 'Hello!' 
count = 0 
for item in greeting: 
    print("item={}, index={}, count={:d}".format(item,greeting.index(item),count)) 
    count += 1 

這將打印出:

item=H, index=0, count=0 
item=e, index=1, count=1 
item=l, index=2, count=2 
item=l, index=2, count=3 
item=o, index=4, count=4 
item=!, index=5, count=5 

有了上面的代碼,你可以看到,計數會自動字符串「的各項指標相關聯你好!」。但是,例如,如果將計數值設置爲1,則第1個索引(Index0)字符串與count = 1時相關聯,然後將其值與for循環索引的結尾相乘。

在「你好!」字符串有6個項目。第一項索引總是從0開始。但是爲了打印更漂亮的顯示,比如'第一項,第二項,第三項...',您可以添加一個計數變量,或者可以使用枚舉函數,如下面的示例:

greeting = 'Hello!' 
count = 1 
for item in greeting: 
    print("item={}, index={}, count={:d}".format(item,greeting.index(item),count)) 
    count += 1 

greeting = 'Hello!' 
for count,item in enumerate(greeting,1): 
    print("item={}, index={}, count={:d}".format(item,greeting.index(item),count)) 

最後兩碼會給你哪都一樣的結果:

item=H, index=0, count=1 
item=e, index=1, count=2 
item=l, index=2, count=3 
item=l, index=2, count=4 
item=o, index=4, count=5 
item=!, index=5, count=6 
1

Count不會與字符串的每個索引關聯。

'Hello'是一個被在各種指數由多個字符的字符串:

`'Hello!'[0] = 'H'` 
`'Hello!'[1] = 'e'` 
`'Hello!'[2] = 'l'` 
`'Hello!'[3] = 'l'` 
`'Hello!'[4] = 'o'` 
`'Hello!'[5] = '!'` 

for循環,你正在遞增每次可變count。因此,在第一次迭代中,count=0。在第二次迭代中,count=1等等。您的循環只檢查count是否可以被2整除。如果是,則它會再次打印出與其值相對應的字母。因此,出於

H 
e 
e 
l 
l 
l 
o 
! 
! 
done 
+2

_「因此,在第一次迭代中,計數= 0 [...]」 - - 不,這是不正確的。他在'for'循環開始時立即增加'count'。因此,在使用'count'時,它的值是'1'而不是'0'。並且在第二次迭代中,值是'2'而不是'1',無限廣告。 –

+0

@ChristianDean這是真的,但我試圖通過在循環開始之前或循環開始時解釋'count'的值來簡化解釋。但是,是的,謝謝你的澄清!因爲他在每次循環迭代開始時遞增count,所以它在第一次迭代中以1開始,在第二次迭代中以2開始,依此類推。 – victor