Chciałbym to zrobić pyton. Co chciałbym zrobić w tym przykładzie wdo:
W C:
#include <stdio.h>
int main() {
int i;
for (i=0; i<10; i++) printf(".");
return 0;
}
Wynik:
..........
W Pythonie:
>>> for i in range(10): print('.')
.
.
.
.
.
.
.
.
.
.
>>> print('.', '.', '.', '.', '.', '.', '.', '.', '.', '.')
. . . . . . . . . .
W Python print
doda znak \n
lub spację, jak mogę tego uniknąć? To tylko przykład, nie mów mi, że mogę najpierw zbudować ciąg, a następnie go wydrukować. Chciałbym wiedzieć, jak „dołączyć” ciągi znaków stdout
.
Odpowiedzi:
W Pythonie 3 możesz użyć parametrów
sep=
i funkcji:end=
print
Aby nie dodawać nowego wiersza na końcu ciągu:
Aby nie dodawać spacji między wszystkimi argumentami funkcji, które chcesz wydrukować:
Możesz przekazać dowolny ciąg do dowolnego parametru i możesz użyć obu parametrów jednocześnie.
Jeśli masz problemy z buforowaniem, możesz opróżnić dane wyjściowe, dodając
flush=True
argument słowa kluczowego:Python 2.6 i 2.7
Z Python 2.6 możesz albo zaimportować
print
funkcję z Python 3, używając__future__
modułu :co pozwala na użycie powyższego rozwiązania Python 3.
Należy jednak pamiętać, że
flush
słowo kluczowe nie jest dostępne w wersjiprint
funkcji importowanej z__future__
Python 2; działa tylko w Pythonie 3, a dokładniej w wersji 3.3 i nowszych. We wcześniejszych wersjach nadal musisz ręcznie przepłukać połączenie zsys.stdout.flush()
. Będziesz także musiał przepisać wszystkie inne instrukcje drukowania w pliku, w którym odbywa się ten import.Lub możesz użyć
sys.stdout.write()
Być może trzeba będzie zadzwonić
aby zapewnić
stdout
natychmiastowe spłukanie.źródło
flush
i co to właściwie robi?Powinno to być tak proste, jak opisano pod tym linkiem Guido Van Rossum:
Re: Jak można wydrukować bez AC / R?
http://legacy.python.org/search/hypermail/python-1992/0115.html
Tak, dodaj przecinek po ostatnim argumencie do wydrukowania. Na przykład ta pętla wypisuje liczby 0..9 w wierszu oddzielonym spacjami. Zwróć uwagę na bezparametrowy „print”, który dodaje ostatnią nową linię:
źródło
Uwaga: tytuł tego pytania brzmiał kiedyś jak „Jak wydrukować w Pythonie?”
Ponieważ ludzie mogą przychodzić tutaj, szukając go na podstawie tytułu, Python obsługuje również podstawianie w stylu printf:
I możesz ręcznie pomnożyć wartości ciągów:
źródło
Użyj funkcji drukowania w stylu python3 dla python2.6 + (spowoduje również uszkodzenie wszystkich istniejących instrukcji drukowania zawierających słowa kluczowe w tym samym pliku).
Aby nie zniszczyć wszystkich słów kluczowych do drukowania w Python2, utwórz osobny
printf.py
plikNastępnie użyj go w swoim pliku
Więcej przykładów pokazujących styl printf
źródło
Jak drukować na tej samej linii:
źródło
Nowa (od Python 3.x)
print
funkcja ma opcjonalnyend
parametr, który pozwala modyfikować znak końcowy:Wynik:
Istnieje również
sep
separator:Wynik:
Jeśli chcesz użyć tego w Pythonie 2.x, po prostu dodaj to na początku pliku:
from __future__ import print_function
źródło
Użycie funools.partial do utworzenia nowej funkcji o nazwie printf
Łatwy sposób na zawinięcie funkcji o domyślne parametry.
źródło
Możesz po prostu dodać
,
na końcuprint
funkcji, aby nie drukowała w nowej linii.źródło
W Python 3+
print
jest funkcją. Kiedy zadzwoniszPython tłumaczy to na
Możesz zmienić
end
na co tylko chcesz.źródło
python 2.6+ :
python 3 :
python <= 2.5 :
jeśli dodatkowe miejsce jest OK po każdym wydruku, w Pythonie 2
wprowadzające w błąd w python 2 - unikaj :
źródło
Możesz spróbować:
źródło
Możesz zrobić to samo w python3 w następujący sposób:
i wykonaj to za pomocą
python filename.py
lubpython3 filename.py
źródło
ostatnio miałem ten sam problem ..
rozwiązałem to przez:
działa to zarówno na Uniksie, jak i na Windowsie ... nie testowałem tego na Macosxie ...
hth
źródło
sys.__stdout__
@lenooh spełnił moje zapytanie. Odkryłem ten artykuł, szukając hasła „python suppress newline”. Używam IDLE3 na Raspberry Pi do programowania Python 3.2 dla PuTTY. Chciałem utworzyć pasek postępu w linii poleceń PuTTY. Nie chciałem przewijać strony. Chciałem, aby linia pozioma ponownie zapewniła użytkownika, że nie wystraszy się, że program nie przestał się zatrzymywać ani nie został wysłany na lunch w wesołej, nieskończonej pętli - w ramach prośby „zostaw mnie, jestem w porządku, ale może to zająć trochę czasu. wiadomość interaktywna - jak pasek postępu w tekście.
print('Skimming for', search_string, '\b! .001', end='')
Inicjuje wiadomość poprzez przygotowanie do następnego ekranu i zapisu, który będzie drukować trzy backspace jak ⌫⌫⌫ rubout a potem okres, ścierając „001” i wydłużenie linii okresach. Posearch_string
wprowadzeniu danych przez papugi,\b!
przycina wykrzyknik mojegosearch_string
tekstu, aby cofnął się o przestrzeń, która wprint()
przeciwnym razie wymusza, odpowiednio umieszczając interpunkcję. Następnie następuje spacja i pierwsza „kropka” „paska postępu”, którą symuluję. Niepotrzebnie wiadomość jest następnie wypełniana również numerem strony (sformatowanym do długości trzech z wiodącymi zerami), aby zwrócić uwagę użytkownika na przetwarzanie danych, a także odzwierciedlić liczbę okresów, które później zbudujemy do dobrze.Mięso paska postępu znajduje się w
sys.stdout.write('\b\b\b.'+format(page, '03'))
linii. Po pierwsze, aby skasować w lewo, tworzy kopię zapasową kursora nad trzema znakami numerycznymi za pomocą „\ b \ b \ b” jako „⌫⌫⌫” i upuszcza nowy okres, aby zwiększyć długość paska postępu. Następnie zapisuje trzy cyfry strony, do której doszedł do tej pory. Ponieważsys.stdout.write()
czeka na zamknięcie pełnego bufora lub kanału wyjściowego,sys.stdout.flush()
wymusza natychmiastowy zapis.sys.stdout.flush()
jest wbudowany, na końcuprint()
którego jest omijanyprint(txt, end='' )
. Następnie kod przechodzi przez swoje przyziemne operacje wymagające dużego nakładu czasu, podczas gdy nie drukuje nic więcej, dopóki nie powróci tutaj, aby usunąć trzy cyfry, dodać kropkę i ponownie napisać trzy cyfry, przyrostowo.Trzy cyfry, wyczyszczone i przepisane, nie są w żadnym wypadku konieczne - to tylko zawijas, który stanowi przykład w
sys.stdout.write()
porównaniu doprint()
. Możesz równie łatwo zalać kropką i zapomnieć o trzech fantazyjnych odwrotnych ukośnikach-b ⌫ (oczywiście nie zapisując również sformatowanej liczby stron), po prostu drukując pasek kropki dłużej o jeden za każdym razem - bez spacji i znaków nowej linii, używając tylkosys.stdout.write('.'); sys.stdout.flush()
para.Należy pamiętać, że powłoka Python Raspberry Pi IDLE3 nie honoruje backspace jako ⌫ wymazywania, ale zamiast tego drukuje spację, tworząc zamiast tego widoczną listę ułamków.
- (o = 8> wiz
źródło
Zauważysz, że wszystkie powyższe odpowiedzi są prawidłowe. Ale chciałem zrobić skrót, aby zawsze pisać na końcu parametr „end = ''”.
Możesz zdefiniować funkcję podobną do
Akceptuje całą liczbę parametrów. Nawet zaakceptuje wszystkie inne parametry, takie jak file, flush itp. O tej samej nazwie.
źródło
*arg
na początek (python 2.7), a umieszczenie go na końcu działało, ale nie działało całkowicie poprawnie. Zdefiniowałem funkcję, która tylko wzięłaPrint(*args)
, a następnie po prostu wywołałem print za pomocąsep='', end=''
. A teraz działa tak, jak chcę. Jeden głos za tym pomysłem.Wiele z tych odpowiedzi wydaje się nieco skomplikowanych. W Python 3.x po prostu to robisz:
Domyślna wartość końca to
"\n"
. Po prostu zmieniamy go na spację lub możesz też użyćend=""
(bez spacji), aby zrobić to, coprintf
zwykle.źródło
chcesz wydrukować coś w pętli w prawo, ale nie chcesz, aby drukowała się w nowej linii za każdym razem ... na przykład:
ale chcesz, aby drukował w ten sposób: cześć cześć cześć cześć dobrze ???? po prostu dodaj przecinek po wydrukowaniu „cześć”
Przykład:
for i in range (0,5): print "hi", OUTPUT: hi hi hi hi hi
źródło
Lub mieć funkcję taką jak:
Więc teraz:
Wyjścia:
źródło
Działa to zarówno w wersjach 2.7.8, jak i 2.5.2 (odpowiednio Canopy i OSX) - nie wymaga importu modułu ani podróży w czasie.
źródło
sys.stdout.isatty()
jeśli nie zostaniesz przekierowany do pliku.Istnieją dwa ogólne sposoby na to:
Drukuj bez nowej linii w Pythonie 3.x
Nie dodawaj nic po instrukcji print i usuń „\ n”, używając
end=''
jako:Kolejny przykład w pętli :
Drukuj bez nowej linii w Python 2.x
Dodanie przecinka końcowego oznacza, że po wydruku ignoruj
\n
.Kolejny przykład w pętli :
Mam nadzieję, że to ci pomoże. Możesz odwiedzić ten link .
źródło
end=" "
np .: print ('hello', end = '' "); print ('world')print 'hello' ;print'there'
w paiza.io/projects/e/35So9iUPfMdIORGzJTb2NQ... nie musisz importować żadnej biblioteki. Wystarczy użyć znaku usuwania:
to usuwa znak nowej linii i spację (^ _ ^) *
źródło