Respostas:
Existem várias maneiras de alcançar seu resultado. Se você está apenas querendo uma solução para o seu caso, use a multiplicação de strings como o @Ant menciona. Isso só funcionará se cada uma de suas print
instruções imprimir a mesma string. Observe que ele funciona para multiplicação de qualquer cadeia de comprimento (por exemplo, 'foo' * 20
funciona).
>>> print 'a' * 20
aaaaaaaaaaaaaaaaaaaa
Se você quiser fazer isso em geral, crie uma sequência e imprima-a uma vez. Isso consumirá um pouco de memória para a string, mas faça apenas uma chamada print
. Observe que a concatenação de strings usando +=
agora é linear no tamanho da string que você está concatenando, portanto isso será rápido.
>>> for i in xrange(20):
... s += 'a'
...
>>> print s
aaaaaaaaaaaaaaaaaaaa
Ou você pode fazer isso mais diretamente usando o sys.stdout . write () , que print
é um invólucro. Isso gravará apenas a sequência bruta que você fornecer, sem nenhuma formatação. Observe que nenhuma nova linha é impressa mesmo no final dos 20 a
s.
>>> import sys
>>> for i in xrange(20):
... sys.stdout.write('a')
...
aaaaaaaaaaaaaaaaaaaa>>>
O Python 3 altera a print
instrução para uma função print () , que permite definir um end
parâmetro. Você pode usá-lo em> = 2.6 importando de __future__
. No entanto, eu evitaria isso em qualquer código 2.x sério, pois será um pouco confuso para quem nunca usou o 3.x. No entanto, você deve provar algumas das vantagens que 3.x traz.
>>> from __future__ import print_function
>>> for i in xrange(20):
... print('a', end='')
...
aaaaaaaaaaaaaaaaaaaa>>>
"".join(...)
vez disso.
+=
no Python é uma operação de tempo constante para concatenação de um único caractere.
Do PEP 3105: print como uma função no documento O que há de novo no Python 2.6 :
>>> from __future__ import print_function
>>> print('a', end='')
Obviamente, isso só funciona com python 3.0 ou superior (ou 2.6+ com a from __future__ import print_function
no início). A print
instrução foi removida e tornou-se a print()
função por padrão no Python 3.0.
Você pode suprimir o espaço imprimindo uma sequência vazia para stdout entre as print
instruções.
>>> import sys
>>> for i in range(20):
... print 'a',
... sys.stdout.write('')
...
aaaaaaaaaaaaaaaaaaaa
No entanto, uma solução mais limpa é criar primeiro toda a sequência que você deseja imprimir e depois imprimi-la com uma única print
instrução.
sys.stdout.write()
é mais conveniente neste caso. No entanto, eu queria mostrar que escrever uma string vazia para stdout suprime o espaço entre os elementos escritos usando print
, o que poderia ser útil em situações semelhantes.
Você pode imprimir um caractere de backspace ( '\b'
):
for i in xrange(20):
print '\ba',
resultado:
aaaaaaaaaaaaaaaaaaaa
Se você deseja que eles apareçam um de cada vez, você pode fazer o seguinte:
import time
import sys
for i in range(20):
sys.stdout.write('a')
sys.stdout.flush()
time.sleep(0.5)
sys.stdout.flush()
é necessário forçar o caractere a ser gravado cada vez que o loop é executado.
Apenas como uma observação lateral:
A impressão é O (1), mas a construção de uma sequência e, em seguida, a impressão é O (n), onde n é o número total de caracteres na sequência. Então, sim, enquanto a construção da string é "mais limpa", não é o método mais eficiente de fazer isso.
A maneira como eu faria isso é a seguinte:
from sys import stdout
printf = stdout.write
Agora você tem uma "função de impressão" que imprime qualquer sequência que você especificar, sem retornar o novo caractere de linha a cada vez.
printf("Hello,")
printf("World!")
A saída será: Olá, mundo!
No entanto, se você quiser imprimir números inteiros, flutuantes ou outros valores que não sejam de sequência, precisará convertê-los em uma sequência com a função str ().
printf(str(2) + " " + str(4))
A saída será: 2 4
isso é realmente simples
para versões python 3+, você só precisa escrever os seguintes códigos
for i in range(20):
print('a',end='')
basta converter o loop para os seguintes códigos, você não precisa se preocupar com outras coisas
UAU!!!
É muito muito tempo atrás
Agora, no python 3.x , será bem fácil
código:
for i in range(20):
print('a',end='') # here end variable will clarify what you want in
# end of the code
resultado:
aaaaaaaaaaaaaaaaaaaa
Mais sobre a função print ()
print(value1,value2,value3,sep='-',end='\n',file=sys.stdout,flush=False)
Aqui :
value1,value2,value3
você pode imprimir vários valores usando vírgulas
sep = '-'
3 valores serão separados pelo caractere '-'
você pode usar qualquer caractere em vez dessa sequência par, como sep = '@' ou sep = 'good'
end='\n'
por função de impressão padrão, coloque '\ n' caractere no final da saída
mas você pode usar qualquer caractere ou sequência alterando o valor da variável final
como end = '$' ou end = '.' ou end = 'Olá'
file=sys.stdout
este é um valor padrão, saída padrão do sistema
Usando esse argumento, você pode criar um fluxo de arquivos de saída como
print("I am a Programmer", file=open("output.txt", "w"))
por esse código, você criará um arquivo chamado output.txt onde sua saída Eu sou um programador será armazenada
flush = False
É um valor padrão usando flush = True, você pode liberar o fluxo à força
"".join("a" for i in xrange(20))
. (É muito mais flexível do que apenas fazer"a" * 20
, pois presumo que seja um exemplo simplificado).