如何使用for循环迭代器将字符串中的空格相乘?

时间:2019-02-13 23:10:15

标签: python for-loop

我正在尝试运行一个for循环,该循环在每次迭代时都会添加一个空格,以使文本形成对角线,但是我找不到迭代器的整数值

我尝试了以下操作:

for x in string:
    print(" "*x+x)

但这会引发错误,因为x是一个字符串,而不是数字。我也尝试过:

for x in string:
    print(" "*string.find(x)+x)

但是当字符串中重复字符时,您当然会获得该字符的第一个实例的空格数。

是否可以访问迭代器的实际整数值,以便我可以将其乘以空格?

我尝试过的代码解决方案

for x in string:
    print(" "*x+x)

for x in string:
    print(" "*string.find(x)+x)

第一个代码产生TypeError:不能将序列乘以'str'类型的非整数

第二个代码产生

o
 l
  d

    m
     a
      c
  d
o
         n
     a
 l
  d

              h
     a
  d

     a

                    f
     a
                      r
    m

3 个答案:

答案 0 :(得分:1)

您需要Python迭代器同时返回序列的索引和内容:enumerate

text = "Old MacDonald had a farm"
for pad, char in enumerate(text):
    print(' '*pad + char)

pad的取值范围为0到len(text)-1。

输出:

O
 l
  d

    M
     a
      c
       D
        o
         n
          a
           l
            d

              h
               a
                d

                  a

                    f
                     a
                      r
                       m

如果您希望更接近于已学知识的解决方案,只需遍历字符串的长度,然后为输出索引该字符即可。

text = "Old MacDonald had a farm"
for pad in range(len(text)):
    print(' '*pad + text[pad] )

答案 1 :(得分:0)

您可以使用enumeratex一起获取循环索引:

for i, x in enumerate(string):
    print(" "*i+x)

如您所述,第二个方法失败,因为find返回第一个出现的方法。您可以通过使用startend参数来解决这个问题,但是弄清楚该用什么对他们来说可能比它的价值更麻烦。

答案 2 :(得分:0)

以下是与空间相乘的简单说明:

 `x = '*'
for u in range(0,2000):
    for k in range(0,11):
        for i in range(0,6):
            print(i*x,'    '*k,i*x)
        for j in range(6,0,-1):
            print(j*x,'    '*k,j*x)
    for k in range(10,0,-1):
        for i in range(0,6):
            print(i*x,'    '*k,i*x)
        for j in range(6,0,-1):
            print(j*x,'    '*k,j*x)`

出于娱乐目的,在V.S CODE中运行此代码并享受动画..... HeHeHeHeHeHeHeHeHeHeHeHe ........