【问题标题】:Getting a function to return rather than print让函数返回而不是打印
【发布时间】:2013-10-10 20:59:58
【问题描述】:

所以我设法创建了一个程序,可用于创建具有可配置行和列的棋盘:

def print_column_labels():
print "   a b c d e f g h"

def print_separator_row(num_columns):
print "   " +"+-" * num_columns+"+"

def print_squares_white(row_number, num_columns):
    if row_number<=9:
         print " "+str(row_number) +" "+"| |#" * (num_columns / 2)+"| "+str(row_number)
    else:
        print " "+ str(row_number ) +""+"|#| " * (num_columns / 2)+"| "+str(row_number)

def print_squares_black(row_number, num_columns):
    if row_number<=9:
       print " "+ str(row_number ) +" "+"|#| " * (num_columns / 2)+"| "+str(row_number)
    else:
        print " "+ str(row_number ) +""+"|#| " * (num_columns / 2)+"| "+str(row_number)

def print_chessboard(row_num,num_columns):
            print_column_labels()
            print_separator_row(num_columns)
            if row_num%2==0:
                    while row_num>=1:
                            print_squares_white(row_num,num_columns)
                            row_num-=1
                            print_separator_row(num_columns)
                            print_squares_black(row_num,num_columns)
                            row_num-=1
                            print_separator_row(num_columns)
                            if row_num==0:
                                    print_column_labels()
            else:
                    while row_num>=2:
                            print_squares_white(row_num,num_columns)
                            row_num-=1
                            print_separator_row(num_columns)
                            print_squares_black(row_num,num_columns)
                            row_num-=1
                            print_separator_row(num_columns)
                            if row_num==1:
                                    print_squares_white(row_num,num_columns)
                                    print_separator_row(num_columns)
                                    print_column_labels()

接下来我需要对程序做的事情是将它从仅打印电路板更改为将其作为字符串返回。如何更改代码?

【问题讨论】:

  • 代替print,使用return
  • 我尝试用return 替换我使用print 的所有地方,但我得到none 的输出
  • 你是如何使用函数来获得None的输出的?

标签: python python-2.7 return


【解决方案1】:

要从函数返回,请使用return

def myFunc(x):
    return x+2

var = myFunc(2)
print var # prints 4

如果您改用print,会发生这种情况:

def myFunc(x):
    print x+2

var = myFunc(2) # prints 4
print var # prints None

这是因为如果在 python 函数中没有调用return,python 会自动假定您在函数末尾需要return None。不确定这些信息是否有帮助,但如果有帮助,它就在那里。

【讨论】:

    【解决方案2】:
    def print_column_labels():
        return "   a b c d e f g h" + "\n"
    
    def print_separator_row(num_columns):
        return "   " +"+-" * num_columns+"+" + "\n"
    
    def print_squares_white(row_number, num_columns):
        if row_number<=9:
            return " "+str(row_number) +" "+"| |#" * (num_columns / 2)+"| "+str(row_number) + "\n"
        else:
            return " "+ str(row_number ) +""+"|#| " * (num_columns / 2)+"| "+str(row_number) + "\n"
    
    def print_squares_black(row_number, num_columns):
        if row_number<=9:
            return " "+ str(row_number ) +" "+"|#| " * (num_columns / 2)+"| "+str(row_number) + "\n"
        else:
            return " "+ str(row_number ) +""+"|#| " * (num_columns / 2)+"| "+str(row_number) + "\n"
    
    def print_chessboard(row_num,num_columns):
        result = ""
        result = result + print_column_labels()
        result = result + print_separator_row(num_columns)
        if row_num%2==0:
            while row_num>=1:
                result = result + print_squares_white(row_num,num_columns)
                row_num-=1
                result = result + print_separator_row(num_columns)
                result = result + print_squares_black(row_num,num_columns)
                row_num-=1
                result = result + print_separator_row(num_columns)
                if row_num==0:
                    result = result + print_column_labels()
        else:
            while row_num>=2:
                result = result + print_squares_white(row_num,num_columns)
                row_num-=1
                result = result + print_separator_row(num_columns)
                result = result + print_squares_black(row_num,num_columns)
                row_num-=1
                result = result + print_separator_row(num_columns)
                if row_num==1:
                    result = result + print_squares_white(row_num,num_columns)
                    result = result + print_separator_row(num_columns)
                    result = result + print_column_labels()
    
        return result
    
    chessboard = print_chessboard(8,8)
    
    print chessboard
    

    【讨论】:

      【解决方案3】:

      您想在函数中构建字符串,然后在最后返回它们。

      def get_column_labels():
          return "   a b c d e f g h"
      
      def get_chessboard(row_num, num_columns):
          # start with an empty list
          rows = []
          # append the result of other functions to the list
          rows.append(get_column_labels()) 
      
          # ...
      
          # build the rows into a string and return it
          return '\n'.join(rows)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-11-14
        • 2021-06-12
        • 1970-01-01
        • 1970-01-01
        • 2019-03-13
        • 1970-01-01
        • 2021-05-23
        相关资源
        最近更新 更多