Как заставить функцию печатать много раз на одной строке, например, печать ( 'тест') * 3 - PullRequest
1 голос
/ 14 марта 2012

Допустим, у меня есть код (хотя он ничего не делает, просто пример)

def myprint():
    print("foobar")
foo = random.randint(1, 6)
myprint() * foo    #Obviously doesn't work

То, что я хочу, это выполнить print() 'foo' раз. Как мне это сделать?

Ответы [ 5 ]

3 голосов
/ 14 марта 2012

Вы можете изменить свой код на этот:

def myprint(times):
    print(times*"foobar")
foo = random.randint(1, 6)
myprint(foo)
2 голосов
/ 14 марта 2012

«Питонический» способ заключается в цикле for:

for n in range(foo):
    printfunc()

(Обратите внимание, что если вы определяете печать так же, как в Python 3, вы маскируете оригинал print своим собственным).

0 голосов
/ 14 марта 2012

Вот почему вы не должны вызывать свою собственную функцию print

Python 3.2 (r32:88445, Dec  8 2011, 15:26:51) 
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> help(print)

Help on built-in function print in module builtins:

print(...)
    print(value, ..., sep=' ', end='\n', file=sys.stdout)

    Prints the values to a stream, or to sys.stdout by default.
    Optional keyword arguments:
    file: a file-like object (stream); defaults to the current sys.stdout.
    sep:  string inserted between values, default a space.
    end:  string appended after the last value, default a newline.


>>> def print():
...     print("foobar")
... 
>>> help(print)

Help on function print in module __main__:

print()


>>>

упс, теперь вы перезаписали встроенную print, поэтому вы больше не можете использовать ее для фактической печати материала

0 голосов
/ 14 марта 2012

Или если вы хотите быть в тени и раздражать людей, читающих ваш код:

import random
print('\n'.join(["foo" for _ in range(random.randint(1,6))]))
0 голосов
/ 14 марта 2012
for i in range(foo):
    print('test')

Если вы действительно хотите сделать это как выражение, которое возвращает что-то произвольное (обычно очень плохую или, по крайней мере, крайне хакерскую) форму ...

[print('test') for _ in range(foo)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...