Eu gostaria de fazê-lo Pitão. O que eu gostaria de fazer neste exemplo emc:
Em C:
#include <stdio.h>
int main() {
int i;
for (i=0; i<10; i++) printf(".");
return 0;
}
Resultado:
..........
Em Python:
>>> for i in range(10): print('.')
.
.
.
.
.
.
.
.
.
.
>>> print('.', '.', '.', '.', '.', '.', '.', '.', '.', '.')
. . . . . . . . . .
No Python print
irá adicionar um \n
ou espaço, como posso evitar isso? Agora, é apenas um exemplo, não me diga que eu posso primeiro construir uma string e depois imprimi-la. Eu gostaria de saber como "anexar" as strings stdout
.
Respostas:
No Python 3, você pode usar os parâmetros
sep=
eend=
daprint
função:Para não adicionar uma nova linha ao final da string:
Para não adicionar um espaço entre todos os argumentos da função que você deseja imprimir:
Você pode passar qualquer sequência para qualquer parâmetro e pode usar os dois parâmetros ao mesmo tempo.
Se você estiver tendo problemas com o buffer, poderá liberar a saída adicionando
flush=True
argumento de palavra-chave:Python 2.6 e 2.7
No Python 2.6, você pode importar a
print
função do Python 3 usando o__future__
módulo :que permite usar a solução Python 3 acima.
No entanto, observe que a
flush
palavra-chave não está disponível na versão daprint
função importada do__future__
Python 2; só funciona no Python 3, mais especificamente 3.3 e posterior. Nas versões anteriores, você ainda precisará liberar manualmente com uma chamada parasys.stdout.flush()
. Você também precisará reescrever todas as outras instruções de impressão no arquivo em que você faz essa importação.Ou você pode usar
sys.stdout.write()
Você também pode precisar ligar para
para garantir que ele
stdout
seja lavado imediatamente.fonte
flush
e o que isso realmente faz?Deve ser tão simples como descrito neste link por Guido Van Rossum:
Re: Como se imprime sem ac / r?
http://legacy.python.org/search/hypermail/python-1992/0115.html
Sim, acrescente uma vírgula após o último argumento a ser impresso. Por exemplo, esse loop imprime os números 0..9 em uma linha separada por espaços. Observe a "impressão" sem parâmetros que adiciona a nova linha final:
fonte
Nota: O título desta pergunta costumava ser algo como "Como imprimir em python?"
Como as pessoas podem vir procurá-lo com base no título, o Python também suporta a substituição no estilo printf:
E você pode facilmente multiplicar os valores das strings:
fonte
Use a função de impressão no estilo python3 para python2.6 + (também quebrará quaisquer instruções de impressão com palavras-chave existentes no mesmo arquivo.)
Para não estragar todas as palavras-chave de impressão python2, crie um
printf.py
arquivo separadoEm seguida, use-o no seu arquivo
Mais exemplos mostrando o estilo printf
fonte
Como imprimir na mesma linha:
fonte
A nova função (a partir do Python 3.x)
print
possui umend
parâmetro opcional que permite modificar o caractere final:Resultado:
Há também
sep
para separador:Resultado:
Se você quiser usá-lo no Python 2.x, basta adicioná-lo no início do seu arquivo:
from __future__ import print_function
fonte
Usando functools.partial para criar uma nova função chamada printf
Maneira fácil de agrupar uma função com parâmetros padrão.
fonte
Você pode simplesmente adicionar
,
no final daprint
função para que ela não seja impressa em uma nova linha.fonte
No Python 3+,
print
é uma função. Quando Você ligarPython traduz para
Você pode mudar
end
para o que quiser.fonte
python 2.6+ :
python 3 :
python <= 2.5 :
se houver espaço extra após cada impressão, em python 2
enganoso no python 2 - evite :
fonte
Podes tentar:
fonte
Você pode fazer o mesmo em python3 da seguinte maneira:
e execute-o com
python filename.py
oupython3 filename.py
fonte
recentemente tive o mesmo problema ..
eu o resolvi fazendo:
isso funciona no unix e no windows ... não o testou no macosx ...
hth
fonte
sys.__stdout__
@lenooh atendeu minha pergunta. Eu descobri este artigo enquanto procurava por 'python suprimir nova linha'. Estou usando o IDLE3 no Raspberry Pi para desenvolver o Python 3.2 para PuTTY. Eu queria criar uma barra de progresso na linha de comando do PuTTY. Eu não queria que a página rolasse para longe. Eu queria uma linha horizontal para garantir ao usuário que o programa não ficasse paralisado nem foi enviado para almoçar em um loop infinito e alegre - como um pedido para 'me deixar em paz, estou indo bem', mas isso pode levar algum tempo. mensagem interativa - como uma barra de progresso no texto.
Ele
print('Skimming for', search_string, '\b! .001', end='')
inicializa a mensagem preparando-se para a próxima gravação na tela, que imprimirá três backspaces como ⌫⌫⌫ rubout e depois um ponto, apagando '001' e estendendo a linha de pontos. Após osearch_string
papagaio de entrada do usuário, o\b!
apara o ponto de exclamação do meusearch_string
texto para retornar ao espaço que deprint()
outra forma força, colocando corretamente a pontuação. Isso é seguido por um espaço e o primeiro 'ponto' da 'barra de progresso' que estou simulando. Desnecessariamente, a mensagem também é iniciada com o número da página (formatado para um comprimento de três com zeros à esquerda) para notificar o usuário de que o progresso está sendo processado e que também refletirá a contagem de períodos que construiremos posteriormente para o direita.A carne da barra de progresso está na
sys.stdout.write('\b\b\b.'+format(page, '03'))
linha. Primeiro, para apagar à esquerda, ele faz o backup dos três caracteres numéricos com o '\ b \ b \ b' como ⌫⌫⌫ rubout e elimina um novo período para adicionar ao comprimento da barra de progresso. Em seguida, ele grava três dígitos da página para a qual avançou até o momento. Comosys.stdout.write()
aguarda um buffer completo ou o canal de saída fechar, issosys.stdout.flush()
força a gravação imediata.sys.stdout.flush()
é construído no final doprint()
qual é ignoradoprint(txt, end='' )
. Em seguida, o código percorre suas operações intensivas de tempo mundano enquanto não imprime mais nada até retornar aqui para limpar três dígitos, adicionar um ponto final e escrever três dígitos novamente, incrementados.Os três dígitos apagados e reescritos não são de forma alguma necessários - é apenas um floreio que exemplifica
sys.stdout.write()
versusprint()
. Você também pode preparar com facilidade um período e esquecer os três extremos backslash-b fancy (é claro que também não escreve contagens de páginas formatadas) apenas imprimindo a barra do período mais uma vez a cada vez - sem espaços ou novas linhas usando apenas osys.stdout.write('.'); sys.stdout.flush()
par.Observe que o shell Raspberry Pi IDLE3 Python não honra o backspace como ⌫ rubout, mas imprime um espaço, criando uma lista aparente de frações.
- (o = 8> wiz
fonte
Você notará que todas as respostas acima estão corretas. Mas eu queria criar um atalho para sempre escrever o parâmetro "end = ''" no final.
Você pode definir uma função como
Aceitaria todo o número de parâmetros. Mesmo ele aceita todos os outros parâmetros como arquivo, descarga, etc e com o mesmo nome.
fonte
*arg
está no começo (python 2.7), e colocá-lo no final foi executado, mas não funcionou completamente certo. Eu defini uma função que só pegavaPrint(*args)
e depois chamava print withsep='', end=''
. E agora funciona como eu quero. Então, um voto positivo para a ideia.Muitas dessas respostas parecem um pouco complicadas. No Python 3.x, você simplesmente faz isso:
O valor padrão de final é
"\n"
. Estamos simplesmente mudando para um espaço ou você também pode usarend=""
(sem espaço) para fazer o queprintf
normalmente faz.fonte
você deseja imprimir algo no loop for certo, mas não deseja que ele imprima sempre em nova linha .. por exemplo:
mas você deseja que imprima assim: oi oi oi oi oi oi certo ???? basta adicionar uma vírgula após imprimir "oi"
Exemplo:
for i in range (0,5): print "hi", OUTPUT: hi hi hi hi hi
fonte
Ou tem uma função como:
Então agora:
Saídas:
fonte
Isso funcionou em 2.7.8 e 2.5.2 (terminal Canopy e OSX, respectivamente) - nenhuma importação de módulo ou viagem no tempo necessária.
fonte
sys.stdout.isatty()
se não for redirecionado para um arquivo.Existem duas maneiras gerais de fazer isso:
Imprimir sem nova linha no Python 3.x
Não anexe nada após a instrução print e remova '\ n' usando
end=''
como:Outro exemplo no loop :
Imprimir sem nova linha no Python 2.x
A adição de uma vírgula à direita indica que, após a impressão, ignore
\n
.Outro exemplo no loop :
Espero que isso ajude você. Você pode visitar este link .
fonte
end=" "
eg: print ('hello', end = '' "); print ('world')print 'hello' ;print'there'
em paiza.io/projects/e/35So9iUPfMdIORGzJTb2NQ... você não precisa importar nenhuma biblioteca. Basta usar o caractere de exclusão:
isso remove a nova linha e o espaço (^ _ ^) *
fonte