【问题标题】:Python basic loop iterationPython基本循环迭代
【发布时间】:2017-11-15 21:57:45
【问题描述】:

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

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]。问题是,我不明白为什么会这样。

【问题讨论】:

  • “自动关联”是什么意思???它只是从 0 开始计数。
  • H = [1] ???什么?同样,循环的每次迭代,count 变量都会增加 1。只需在循环体的第一行添加 1。
  • for ltr in greeting[::2]:print(ltr) 会打印每个其他的字母......而且......它不是很清楚这个程序的重点是什么
  • 因此,Python for 循环类似于 Java for-each 循环,如果这有助于您理解的话。
  • 您能否编辑您的问题以说明您的具体要求。您的真正问题令人困惑,因为您说的是“自动关联”和“H = [1]”之类的东西。

标签: python python-3.x variables iteration


【解决方案1】:

你问:

请向我解释变量“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 时,第一个索引 (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

【讨论】:

    【解决方案2】:

    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
    

    【讨论】:

    • “因此,在第一次迭代中,count=0[...]” - 不,这是不正确的。他在for 循环开始时立即增加count。所以在使用count 时,它的值是1 而不是0。在第二次迭代中,值是2 而不是1,无限。
    • @ChristianDean 确实如此,但我试图通过在循环开始之前或循环开始时解释 count 的值来简化解释。但是,是的,谢谢你的澄清!因为他在每次循环迭代开始时递增count,所以它在第一次迭代中从值 1 开始,在第二次迭代中从 2 开始,依此类推。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-27
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 2016-01-18
    • 2018-10-13
    • 1970-01-01
    相关资源
    最近更新 更多