【问题标题】:how to reverse the for loop in python and print the elements from left to right如何在python中反转for循环并从左到右打印元素
【发布时间】:2019-12-25 07:45:18
【问题描述】:

这是我用python写的代码

n = 5
row = 2 * n - 2
for i in range(n,-1,-1):
    for j in range(row):
        print(end="")

    row -=2

    for k in range(i+1):
        print('*',end=" ")

    print()

得到的输出是这样的

* * * * *  
* * * * 
* * * 
* * 
*

我想打印这个从左到右的顺序例如

预期的输出是:-

* * * * *
  * * * *
    * * *
      * *
        *

如果有任何可能的方式从左到右打印元素,因为在我的大部分程序中,我需要我正在搜索的逻辑,请帮助我,甚至我使用 reversed 函数进行循环它会反转循环,但我没有得到我期望的结果

【问题讨论】:

    标签: python python-2.7


    【解决方案1】:
    n = 5
    print(*[' '.join(' '*i + '*'*(n-i)) for i in range(n)], sep='\n')
    

    输出:

    * * * * *
      * * * *
        * * *
          * *
            *
    

    说明:

    for i in range(n):
        chars = ' '*i + '*'*(n-i)  #  creating list of (i) spaces followed
                                       #  by (n-i) stars to finish a line of n elements
        print(' '.join(chars))  # join prepared values with spaces
    

    【讨论】:

    • 解释一下就好了;-)
    • 谢谢兄弟你使用列表理解你能不能像我写的普通代码一样给我
    • 我觉得该代码是不言自明的,但我会试一试。
    • 将代码编写为对print 的单个调用会不必要地复杂化。
    【解决方案2】:

    这是一个不使用列表理解的简单解决方案:

    n = 5
    for i in range(n+1):
        for j in range(i):
            print("  ", end="")
        for j in range(i+1, n+1):
            print("* ", end="")
        print()
    

    输出:

    * * * * * 
      * * * * 
        * * * 
          * * 
            *
    

    【讨论】:

      【解决方案3】:

      我的解决方案 - 我也是 python 新手:

      n = 5
      c = 0
      for i in range(n, 0, -1):
          print(" " * c + "*" * i)
          c += 1
      

      n = 5
      c = 0
      while n >= 0:
          print(" " * c + "*" * n)
          n -= 1
          c += 1
      

      【讨论】:

        【解决方案4】:

        问题是print 本身不能打印右对齐文本。但是您可以打印一个右对齐的字符串,而不是多次调用print

        这是您的原始代码,使用 join 而不是内部循环:

        n = 5
        row = 2 * n - 2
        for i in range(n,-1,-1):
            for j in range(row):
                print(end="")
        
            row -=2
        
            row_str = " ".join(["*"] * i)
            print(row_str)
        

        这是使输出右对齐的修改代码:

        n = 5
        row = 2 * n - 2
        whole = row + 1
        for i in range(n,-1,-1):
            for j in range(row):
                print(end="")
        
            row -=2
        
            row_str = " ".join(["*"] * i).rjust(whole)
            print(row_str)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-02-16
          • 2018-07-05
          • 1970-01-01
          • 1970-01-01
          • 2021-08-18
          • 2018-09-05
          • 2021-03-13
          • 1970-01-01
          相关资源
          最近更新 更多