Python 3.4:尝试.rjust整个数字循环

时间:2014-11-15 01:29:46

标签: python loops numbers

我一直在研究这个问题几天(关闭和开启)。我知道我需要在内部循环外部创建一个“间距”循环,但我不知道如何实现它。我做了很多试验和错误,觉得我非常接近。

请记住,这是我的第一个编程课程(适用于任何语言)。

我正在尝试编辑我的代码(抱歉,我很难尝试使格式正确,基本上与下面的列表相同但是.rjust(10)

0 1 2 3 4 5 6 7 8 9
  0 1 2 3 4 5 6 7 8
    0 1 2 3 4 5 6 7
      0 1 2 3 4 5 6
        0 1 2 3 4 5
          0 1 2 3 4
            0 1 2 3
              0 1 2
                0 1
                  0

我能够看起来像:

0123456789
012345678
01234567
0123456
012345
01234
0123
012
01
0

基本上我需要.rjust每一行,但有问题使它工作。我知道如果我使用print(str(0123456789).rjust(10))它会给我我想要的东西(第一行),但我需要在循环中实现它。

这是我到目前为止的代码:

for i in range(10,0,-1):
  print()
  print()
  for j in range(i):
    stringnum=str(j)
    print(stringnum,end="")  

2 个答案:

答案 0 :(得分:3)

使用format-specification-mini-language

for i in range(10,-1,-1):
    print("{:>10}".format("".join(map(str,range(i)))))

0123456789
 012345678
  01234567
   0123456
    012345
     01234
      0123
       012
        01
         0

如果你想要间距,你必须加倍右对齐>

for i in range(10,-1,-1):
    print("{:>19}\n".format(" ".join(map(str,range(i)))))

0 1 2 3 4 5 6 7 8 9

  0 1 2 3 4 5 6 7 8

    0 1 2 3 4 5 6 7

      0 1 2 3 4 5 6

        0 1 2 3 4 5

          0 1 2 3 4

            0 1 2 3

              0 1 2

                0 1

                  0

对于列之间的间距,只删除换行符:

for i in range(10,-1,-1):
    print("{:>19}".format(" ".join(map(str,range(i)))))

0 1 2 3 4 5 6 7 8 9
  0 1 2 3 4 5 6 7 8
    0 1 2 3 4 5 6 7
      0 1 2 3 4 5 6
        0 1 2 3 4 5
          0 1 2 3 4
            0 1 2 3
              0 1 2
                0 1
                  0

答案 1 :(得分:1)

这里使用的是rjust

>>> for x in range(10,-1,-1):
...     print("".join(map(str,range(x))).rjust(10))
... 
0123456789
 012345678
  01234567
   0123456
    012345
     01234
      0123
       012
        01
         0

在上面的代码中,我首先将所有integer转换为string,然后我使用join一起加入列表以形成字符串。
rjust以长度为一的字符串返回左对齐的字符串。

整数之间的空格,你只需要在join函数中添加空格,rjust值就是19:

>>> for x in range(10,-1,-1):
...     print(" ".join(map(str,range(x))).rjust(19))
... 
0 1 2 3 4 5 6 7 8 9
  0 1 2 3 4 5 6 7 8
    0 1 2 3 4 5 6 7
      0 1 2 3 4 5 6
        0 1 2 3 4 5
          0 1 2 3 4
            0 1 2 3
              0 1 2
                0 1
                  0