MC, 12:44 niedziela, 02.06.2013 r.
Ilustracja do artykułu: Python - Printowanie bez spacji i znaku nowej linii

Python - Printowanie bez spacji i znaku nowej linii

Kilka słów na temat tego jak w Pythonie wypisywać znaki na standardowe wyjście bez konieczności umieszczania ich w nowej linii, czy rozdzielania spacją.

Że o co chodzi?!

Zdaję sobie sprawę, że powyższy opis podjętego w tym artykule tematu, może być niezrozumiały, dlatego przejdźmy od razu do przykładu, który wszystko wyklaruje. Spójrzmy na poniższy output pracy z Pythonem:
>>> for i in range(0, 10):
...     print(i)
... 
0
1
2
3
4
5
6
7
8
9

Jak widać, kolejne wartości zmiennej i zostały wypisane, przy czym każda z nich umieszczona jest w nowym wierszu. Natomiast my pytamy się, co zrobić, aby rezultat znalazł się w jednej linii:

0123456789

Ok, to jak się za to zabrać?

Teraz, kiedy wiadomo już do czego dążymy, możemy spróbować zabrać się za tak postawiony problem. Najpopularniejszą propozycją, z jaką możemy się spotkać, jest dołączenie przecinka do komendy print, co spowoduje połączenie wyświetlanych znaków w jeden ciąg. Popatrzmy:
>>> for i in range(0, 10):
...     print(i),
... 
0 1 2 3 4 5 6 7 8 9

Jak widać jest zdecydowanie lepiej. Wciąż jednak, poszczególne elementy pozostają odseparowane od siebie spacją. W wielu scenariuszach jest to nawet pożądane, ale spróbujmy pójść o krok dalej i pozbyć się również tych spacji.

Do tego celu posłużymy się funkcją sys.stdout.write() pochodzącą z moduły sys, w zamian za print. Funkcja ta wymaga podania argumentu, który jest stringiem, zatem najpierw będziemy musieli użyć konwersji. Zerknijmy na poniższy kod:

>>> import sys
>>> for i in range(0, 10):
...     sys.stdout.write(str(i))
... 
0123456789

Osiągnęliśmy zamierzony cel! Całość została wypisana w jednym wierszu bez spacji.

Co w przypadku Pythona w wersji 3?

Dyrektywa print, w Pythonie od wersji 3, stała się funkcją, której możemy przekazać jeszcze jeden argument, mówiący o tym co dokleić do wyświetlanej streści. Stąd chcąc uzyskać ten sam efekt co poprzednio, powinniśmy posłużyć się funkcją print, z zaznaczeniem, że na końcu treści nie chcemy wyświetlać nic (łącznie ze znakiem nowego wiersza):
print(i, end="")

Komentarze (1)

Imię:
Treść:
Kamil 2019-06-18 20:53:16
Ten sposób na python3 nie działa w połączeniu z pętla for. Chyba autor nie testował