Python:字母计数

时间:2013-11-26 20:01:48

标签: python python-3.x

我需要有人帮我解释下面的代码。 在查看解决方案之后,我花了一些时间才弄清楚这个数字实际上代表了字母计数的数量。但是,我在python中非常弱。

那么,有人可以用简单的英语向我解释字母数如何与数字列表相关联吗?

line = 'abcdef'
count = [3,4,7,1,2,5]
index = 0
while index < len(line):
  print(count[index], end=' ')
  for k in range(0,count[index]):
    print(line[index],end='')
  print()
  index = index + 1

输出

3 aaa
4 bbbb
7 ccccccc
1 d
2 ee
5 fffff

2 个答案:

答案 0 :(得分:3)

循环在0len(line) - 1上使用该索引生成linecount之间的索引。因此,count预计长度相同。

通过以下方式:

  1. 只要index小于len(line),请保持循环播放。
  2. 打印count[index],后面有空格,没有换行符。
  3. 0循环到count[index] - 1。这将循环count[index]次。在此for循环中,打印line[index]时没有换行符,导致该字符被打印count[index]次。
  4. 打印换行符
  5. 增量index
  6. 第一次迭代index0,小于len(line)line[0]acount[0]为3,因此在打印3后,a会被打印3次。

    第二次迭代index1,小于len(line)line[1]bcount[1]为4,因此在打印4后,b会被打印4次。

    等。直到index6,此时while循环结束。

    代码可以简化为:

    for char, c in zip(line, count):
        print(c, c * char)
    

答案 1 :(得分:1)

让我们一次完成一次迭代:

  • 第一次迭代:index为0,count[0]3line[0]'a'。因此,我们打印3,然后打印'a' 3次
  • 第二次迭代:index为1,count[1]4line[1]'b'。因此,我们打印4,然后打印'b' 4次

希望这足以说明发生了什么。