多循环打印,无冗余

时间:2013-10-21 00:04:44

标签: python redundancy

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

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 

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

3 个答案:

答案 0 :(得分:0)

你的程序中根本不需要循环,只需拼出函数调用。

如果你想要一个循环,你可以使用这样的东西虽然它是非常无意义的:

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

答案 1 :(得分:0)

通过对代码进行最少的更改,您可以通过在调用下一个函数时返回上一个函数的返回值来执行您想要的操作:

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

答案 2 :(得分:0)

这适用于任何返回字符串的任意函数列表(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