Python - почему моя функция не выводит «а» десять раз?Вопрос новичка - PullRequest
0 голосов
/ 21 октября 2018
def testfunction():
    for i in range(10):
        return('a')


print(testfunction())

Я хочу, чтобы 'a' пересчитывалось 10 раз в одной строкеЕсли я использую print вместо return, это дает мне 10 'a, но каждый на новой строке.Вы можете помочь?

Ответы [ 7 ]

0 голосов
/ 21 октября 2018

Когда вы используете return, вы немедленно прекращаете выполнение функции, и возвращается только одно значение.
Другие ответы здесь предоставляют более простой способ решения вашей проблемы (что здорово), но я хотел бы предложитьдругой подход, использующий yield (вместо return) и создающий генератор (который может быть излишним, но, тем не менее, допустимой альтернативой):

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

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

1. Что означает ключевое слово yield?

0 голосов
/ 22 октября 2018
def test ():
    print('a' * 10)

test()

Вывод будет 'aaaaaaaaaa'.

0 голосов
/ 21 октября 2018

Я хочу, чтобы 'a' пересчитывалось 10 раз в одной строкеЕсли я использую print вместо return, он дает мне 10 'a, но каждый на новой строке.

Если вы хотите использовать print, вам нужно передать второй параметр следующим образом:

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

Тем не менее, я думаю, что питонский путь заключается в следующем:

def testfunction():
    print('a' * 10)
0 голосов
/ 21 октября 2018

Если вы хотите, чтобы «а» печаталось 10 раз в одной строке, тогда вы можете просто перейти к:

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

Нет необходимости использовать цикл for.Цикл for будет просто «a» в течение 10 раз, но каждый раз это будет новая строка.

Вы также можете взять аргумент функции и напечатать «a» столько раз, сколько пожелаете.Например:

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

Тест:

TestCode(5)
>>> aaaaa

TestCode(7)
>>> aaaaaaa
0 голосов
/ 21 октября 2018

print и return смешиваются при запуске Python.

Функция может return что угодно, но это не значит, что значение будет printed для вас.Функция может даже вернуть другую функцию (это называется функциональным программированием).

Приведенная ниже функция адаптирована из вашего вопроса и returns строковый объект.Когда вы call функция, это returns объект string в переменную с именем x.Он содержит всю информацию, которую вы хотели, и вы можете print передать ее на консоль.

Вы могли бы также использовать yield или print в цикле for, но это может быть за пределами области видимости.

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"
0 голосов
/ 21 октября 2018

return завершает текущую функцию, в то время как print - это вызов другой функции (по крайней мере, в python 3)

Любой код после оператора return не будет выполняться.Способ печати на 10 Python будет таким:

print('a' * 10)

В вашем случае это будет выглядеть следующим образом:

def testfunction ():
    return 'a' * 10

print(testfunction ())
0 голосов
/ 21 октября 2018

Причина, по которой он печатается только один раз, заключается в том, что возвращаемая инструкция завершает функцию (функция возврата останавливает цикл).

Чтобы напечатать 'a' 10 раз, вы хотите выполнить следующее:

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


testfunction()
...