Python-为什么我的函数不输出“ a”十次?初学者问题

时间:2018-10-21 07:17:49

标签: python function for-loop

def testfunction():
    for i in range(10):
        return('a')


print(testfunction())

我希望“ a”在一行中输出10次。如果我使用print而不是return,它会给我10个“ a”,但每个都换一行。你能帮忙吗?

7 个答案:

答案 0 :(得分:3)

return终止当前函数,而print是对另一个函数的调用(在Python 3中至少如此)

return语句之后的任何代码都不会运行。 Python打印10 a的方式是:

print('a' * 10)

对于您来说,它看起来像以下内容:

def testfunction ():
    return 'a' * 10

print(testfunction ())

答案 1 :(得分:2)

其仅打印一次的原因是因为返回语句完成了该功能(返回功能停止了循环)。

要打印'a'10次,请执行以下操作:

def testfunction():
    for i in range(10):
        print('a')


testfunction()

答案 2 :(得分:1)

如果您想在一行中将“ a”打印10次,则只需进行以下操作:

def TestCode():
       print("a"*10)

不需要使用for循环。 For循环只会“出现” 10次,但每次都会换行。

您还可以接受函数参数,并根据需要多次打印“ a”。 如:

def TestCode(times):
       t = "a"*times
       print(t)

测试:

TestCode(5)
>>> aaaaa

TestCode(7)
>>> aaaaaaa

答案 3 :(得分:0)

printreturn在启动Python时会混淆。

一个函数可以return进行任何操作,但这并不意味着该值将为printed。一个函数甚至可以返回另一个函数(称为函数编程)。

下面的函数根据您的问题改编而成,它returns是一个字符串对象。当您call函数时,它会将returns对象string放入名为x的变量中。它包含了您想要的所有信息,您可以将它们print到控制台。

您还可以在for循环中使用yieldprint,但这可能不在范围之内。

def test_function(item:str="a", n:int=10):
    line = item*n # this will be a string object
    return line

ten_a_letters = test_function()
print(ten_a_letters)
"aaaaaaaaaa"

two_b_letters = test_function("b",2)
print(two_b_letters)
"bb"

答案 4 :(得分:0)

  

我希望“ a”在一行中输出10次。如果我使用打印而不是   返回,它给了我10个“ a”,但每个换行了。

如果要使用print,则需要传递第二个参数,如下所示:

def testfunction():
    for i in range(10):
        print('a', end='')

但是,我认为pythonic方法是执行以下操作:

def testfunction():
    print('a' * 10)

答案 5 :(得分:0)

使用return时,将立即结束该函数的执行,并且仅返回一个值。
这里的其他答案提供了一种解决问题的简便方法(很棒),但我想建议使用yield(而不是return)并创建生成器的另一种方法。 strong>(尽管这可能是一个矫kill过正,但仍然是有效的替代方法):

def testfunction():
    for i in range(10):
        yield('a')

print(''.join(x for x in testfunction()))

1. What does "yield" keyword do?

答案 6 :(得分:0)

def test ():
    print('a' * 10)

test()

输出将为'aaaaaaaaaa'。