Eu tenho este código:
>>> for i in xrange(20):
... print 'a',
...
a a a a a a a a a a a a a a a a a a a a
Eu quero saída 'a'
, sem ' '
assim:
aaaaaaaaaaaaaaaaaaaa
É possível?
python
string
printing
python-2.x
pythonFoo
fonte
fonte
"".join("a" for i in xrange(20))
. (É muito mais flexível do que apenas fazer"a" * 20
, pois presumo que seja um exemplo simplificado).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).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.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 20a
s.O Python 3 altera a
print
instrução para uma função print () , que permite definir umend
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.fonte
"".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 :
Obviamente, isso só funciona com python 3.0 ou superior (ou 2.6+ com a
from __future__ import print_function
no início). Aprint
instrução foi removida e tornou-se aprint()
função por padrão no Python 3.0.fonte
Você pode suprimir o espaço imprimindo uma sequência vazia para stdout entre as
print
instruções.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.fonte
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 usandoprint
, o que poderia ser útil em situações semelhantes.Você pode imprimir um caractere de backspace (
'\b'
):resultado:
fonte
Python 3.x:
Python 2.6 ou 2.7:
fonte
Se você deseja que eles apareçam um de cada vez, você pode fazer o seguinte:
sys.stdout.flush()
é necessário forçar o caractere a ser gravado cada vez que o loop é executado.fonte
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:
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.
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 ().
A saída será: 2 4
fonte
Ou o que o Ant diz , ou se acumula em uma string e imprima uma vez:
fonte
sem o que? você quer dizer
?
fonte
isso é realmente simples
para versões python 3+, você só precisa escrever os seguintes códigos
basta converter o loop para os seguintes códigos, você não precisa se preocupar com outras coisas
fonte
UAU!!!
É muito muito tempo atrás
Agora, no python 3.x , será bem fácil
código:
resultado:
Mais sobre a função print ()
Aqui :
você pode imprimir vários valores usando vírgulas
3 valores serão separados pelo caractere '-'
você pode usar qualquer caractere em vez dessa sequência par, como sep = '@' ou sep = 'good'
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á'
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
por esse código, você criará um arquivo chamado output.txt onde sua saída Eu sou um programador será armazenada
É um valor padrão usando flush = True, você pode liberar o fluxo à força
fonte
tão simples como isso
fonte