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)