Python基本循环迭代

时间:2017-06-13 23:23:17

标签: python python-3.x variables iteration

请向我解释变量“count”如何自动将其自身与字符串的每个索引相关联,“你好!”

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 :(得分: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

答案 1 :(得分:0)

你问:

  

请向我解释变量" count"如何自动将自己与字符串的每个索引相关联," Hello!"

但是在你的代码中,没有必要使用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

使用上面的代码,您可以看到计数自动与字符串" Hello!"的每个索引相关联。但是,当您将计数值设置为1时,1&#s; s索引(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