【问题标题】:Multiple loop print without redundancy无冗余多循环打印
【发布时间】:2013-10-21 00:04:44
【问题描述】:

我想循环打印,我不知道那是不是一个词,但让我用下面的代码演示一下

def primer():
    print (greet(), "\n", intro(), "\n" ,origi())

def greet():
    return("Hola ")

def intro():
    return("Mi nombre es Leon ")

def origi():
    return("I am from Guadalajara")

primer()

输出是:

Hola  
 Mi nombre es Leon  
 I am from Guadalajara

期望的输出。

Hola



Hola
 Mi nombre es Leon



Hola
 Mi nombre es Leon
 I am from Guadalajara

那会是 pirint

greet

greet
intro

greet
intro
origi 

没有所有冗余或尽可能少。

【问题讨论】:

  • 您能或多或少地描述一下您想要的输出与您的函数定义之间的关系吗?猜测起来有点复杂。

标签: python redundancy


【解决方案1】:

您的程序中确实不需要循环,只需拼出函数调用即可。

如果你想要一个循环,你可以使用这样的东西,尽管它非常没有意义:

def primer():
    for s in ([greet(), intro(), origi()][:i + 1] for i in range(3)):
        print('\n'.join (s) + '\n')

【讨论】:

    【解决方案2】:

    这应该适用于返回字符串的任意函数列表 (printers):

    def primer():
        printers = (greet, intro, origi)
        print('\n\n\n\n'.join(['\n'.join([printer() for printer in printers[1:n]]) for n in range(len(printers)+1)]))
    

    输出:

    Hola 
    
    
    
    Hola 
    Mi nombre es Leon 
    
    
    
    Hola 
    Mi nombre es Leon 
    I am from Guadalajara
    

    【讨论】:

      【解决方案3】:

      只要对代码进行最少的改动,就可以在调用下一个函数时打印上一个函数的返回值来做你想做的事:

      def primer():
          print (greet(), "\n", intro(), "\n" ,origi())
      
      def greet():
          return("Hola ")
      
      def intro():
          print(greet())
          return("Mi nombre es Leon ")
      
      def origi():
          print(intro())
          return("I am from Guadalajara")
      
      primer()
      

      给我:

      >>> 
      Hola 
      Hola 
      Mi nombre es Leon 
      Hola  
       Mi nombre es Leon  
       I am from Guadalajara
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多