有没有办法用for循环打印这样的数字

时间:2021-07-31 05:50:20

标签: python loops input

我想写一个可以输出这样的结果的代码:

123456
 23456
  3456
   456

关于我想要多少层,我需要使用输入法, 但我无法得到我想要的结果。

我已经试过了:

layers = int(input('layers: '))

for i in range(1,layers+1):
    for j in range(1,i+1):
        print('123456',end ="")
    print('')   

我不知道我哪里做错了,输出很奇怪。

4 个答案:

答案 0 :(得分:0)

你可以这样解决这个问题:

layers = int(input("layers: "))

for i in range(1,layers+1):
   numbers = "".join([str(j) for j in range(i,layers+1)])
   print(" "*(layers-len(numbers)) + numbers)

输出:

123456
 23456
  3456
   456
    56
     6

答案 1 :(得分:0)

这可能有帮助,但它是 js。但是,您可以使用此算法来实现您的目标。

let level = 5;

let str= "";

for (j=1; j<=level; j++){
  for (k=1; k<=j; k++){//increase space
    str = str + " ";
  }
  for (i=j;i<=level;i++) {//decrease text
    str = str + i;
  }
  console.log(str);
  str = ""; //reset text
}

答案 2 :(得分:0)

或者您可以使用 .replace() 函数:

layers = int(input('layers: '))

for i in range(1,layers+1):
    a = '123456'
    for j in range(1,i+1):
        a = a.replace(str(j-1)," ")
    print(a)

答案 3 :(得分:0)

试试这个。您可以在 range

中向后迭代
layers = int(input('layers: '))

for i in range(layers,0,-1):
    print(' '*(layers-i),end='')
    for j in range(1,i+1):
        print(j,end ="")
    print('')