【问题标题】:How do i print strings with indentations?如何打印带有缩进的字符串?
【发布时间】:2021-03-19 14:46:40
【问题描述】:

我需要编写一个函数来打印字符串“加油!” n 次,缩进在新行中增加 5 个空格。 这是我试图编写的代码......问题是我试图创建 5 个空格,但我不能使用任何运算符,因为它在引号内。还有什么办法可以解决吗?

def printAddOils(n):
    for i in range(1, n+1):
        print("Add Oil! \n " "*5*i")

【问题讨论】:

    标签: python string loops


    【解决方案1】:

    你可以试试:

    def printAddOils(n):
        for i in range(1, n+1):
            print("".join([" "]*5*i)+"Add Oil!")
    

    解释语法 [" "]*x 创建一个重复数组 x 次的数组。 然后你得到一个由 5*i 个空格组成的数组。然后语法 "c".join(arr) 将通过使用字符 c(或不使用字符)连接数组的元素来创建一个字符串。

    【讨论】:

      【解决方案2】:

      如果您需要更大的灵活性或做一个简单的连接来自己创建字符串,请使用内置的 textwrap 库

      import textwrap
      def printAddOils(n):
          for i in range(1, n+1):
              print(textwrap.indent("Add Oil!", "     "*i))
      printAddOils(10)
      
      
      def printAddOils2(n):
          for i in range(1, n+1):
              print("".join("     "*i) + "Add Oil!")
      printAddOils2(10)
      
      #      Add Oil!
      #           Add Oil!
      #                Add Oil!
      #                     Add Oil!
      #                          Add Oil!
      #                               Add Oil!
      #                                    Add Oil!
      #                                         Add Oil!
      #                                              Add Oil!
      #                                                   Add Oil!
      

      【讨论】:

        【解决方案3】:
        def printAddOils(n):
            sp=''
            for i in range(1, n+1):
                print(sp+"Add Oil! \n")
                sp+='    '
                
        printAddOils(5)
        
        Add Oil! 
        
        Add Oil! 
        
            Add Oil! 
        
                Add Oil! 
        
                    Add Oil! 
        

        【讨论】:

          【解决方案4】:

          在 python 3.6 以后,您可以使用fstrings

          def printAddOils(n):
              for i in range(1, n+1):
                  print(f"{5*i*' '}" + "Add Oil! \n ")
          

          【讨论】:

            【解决方案5】:
            def printAddOils(n):
                for i in range(1, n+1):
                    print("1" * 5 * i, "Add Oil! \n ", sep='') # replace 1
            printAddOils(3)
            

            输出:

            11111Add Oil! 
             
            1111111111Add Oil! 
             
            111111111111111Add Oil! 
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-09-16
              • 1970-01-01
              • 1970-01-01
              • 2023-02-15
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多