2017-06-13 185 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