【问题标题】:Is there a way to print numbers like this with for loop有没有办法用for循环打印这样的数字
【发布时间】:2021-07-31 05:50:20
【问题描述】:

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

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('')   

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

【问题讨论】:

    标签: python loops input


    【解决方案1】:

    这可能有帮助,但它是 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
    }

    【讨论】:

    • 哦,Nooo.. Python 很抱歉
    【解决方案2】:

    或者你可以使用.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】:

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

      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
      

      【讨论】:

        【解决方案4】:

        试试这个。您可以在 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('')   
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-02-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-12-09
          相关资源
          最近更新 更多