【问题标题】:Python - Returning Multiple Lines of Code without TuplePython - 在没有元组的情况下返回多行代码
【发布时间】:2015-02-08 16:46:14
【问题描述】:

我正在编写一个 python 函数,我希望它打印出一个形状。我仅限于使用 print 五次。如果我使用,形状会打印出来:

def shape():
     print line1
     print line2
     print line3
     print line4
     print line5

然后通过乘以函数多次打印形状。但是,这会用完我分配的所有打印语句,我还需要创建另一个函数来打印相同的形状,但在另一行向右缩进。

所以我希望这个函数返回整个形状,以便我以后可以使用 print 语句。但是,当然,如果我使用 return 而不是 print,我只返回第 1 行,然后函数停止。有没有办法解决这个问题?使用元组对我没有帮助,因为我希望形状完整。

编辑:在写我的答案时,我不允许使用“/n”或任何额外的引号。我得到了可以使用的预设字符串。

【问题讨论】:

  • 为什么限制打印五次?
  • 我不知道...介绍 CS 中的任意作业...现在我真的很后悔当我有经验时参加介绍课程 - 我认为这将是一个简单的 A: -p

标签: python printing return


【解决方案1】:

假定行在列表或元组等中。在行来自的容器上使用 join。

def shape():
     return "\n".join(line1,line2,line3,line4,line5)

或者只返回所有行并在函数上使用连接:

def shape():
     return lines

print("\n".join(shape()))

对于五行return lines[:5]

您可以在任何可迭代对象上使用 join:

def shape():
      return "\n".join(line1,line2,line3,line4,line5)

不使用\n,只需使用单个打印迭代函数:

def shape():
     return lines

for line in shape():
  print(line) 

【讨论】:

    【解决方案2】:

    你可以从一个函数中返回多个变量:

    def shape():
         return line1, line2, line3, line4, line5
    

    并以相同的方式阅读它们:

    line1, line2, line3, line4, line5 = shape()
    

    这意味着,如果您愿意,您可以创建一个“漂亮打印”函数,该函数读取从 shape() 返回的变量并将制表符/换行符/无论您想要什么添加到每一行 - 而不会弄乱您的数据:

    def pretty_print_lines():
        for line in shape():
            print line
    

    【讨论】:

    • 如果我在写完第二行后打印 shape(),我仍然会打印一个元组吗?
    • @numbersloth 我不确定我是否理解您的评论:当您返回多个变量时,它会自动打包到一个元组中,如果您将它读入多个变量中(答案的最后一行) python 将解压元组,这意味着如果你愿意,你可以创建一个“漂亮的打印”函数来读取从shape() 返回的变量,并在每一行添加制表符/换行符/whatever-you-want - 不会弄乱你的数据。我将更新答案以显示示例。
    • 但是如果我将这些行输入到我的代码中,并编写 print shape(),python 仍然会打印一个元组...
    • 呃,这太令人沮丧了——我们不应该使用“for”循环,因为我们“还没有学会它们”(当我有经验时,我真的很后悔参加介绍课--我认为这将是一个简单的 A :-p)
    • @numbersloth 如果它应该是python的非常基本用法,那么我想你应该完全按照你在问题中所做的事情(逐行打印) .
    【解决方案3】:

    将此答案限制为问题中的规范:您可以在函数中使用 format string 并添加 indent 参数。

    def shape(indent = 0):
        indent = ' ' * indent
        print '{}'.format('ab')
        print '{}{}'.format(indent, 'cd')
        print '{}'.format('ef')
        print '{}{}'.format(indent, 'gh')
        print '{}'.format('jk')
    
    def indent5():
        shape(5)
    

    用法:

    >>> shape()
    ab
    cd
    ef
    gh
    jk
    >>> indent5()
    ab
         cd
    ef
         gh
    jk
    >>>
    

    您可以添加很多变体,例如第二个参数来指定缩进偶数行或奇数行 - 这需要在函数中添加更多代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多