Mam ten kod:
>>> 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
Chcę wydrukować 'a'
, bez ' '
tego:
aaaaaaaaaaaaaaaaaaaa
Czy to możliwe?
python
string
printing
python-2.x
pythonFoo
źródło
źródło
"".join("a" for i in xrange(20))
. (Jest to znacznie bardziej elastyczne niż zwykłe robienie tego"a" * 20
, ponieważ zakładam, że jest to uproszczony przykład).Odpowiedzi:
Istnieje wiele sposobów osiągnięcia wyniku. Jeśli szukasz tylko rozwiązania dla swojego przypadku, użyj mnożenia ciągów, jak wspomina @Ant . To zadziała tylko wtedy, gdy każda z twoich
print
instrukcji wypisze ten sam ciąg. Zauważ, że działa on dla mnożenia dowolnego łańcucha długości (np.'foo' * 20
Działa).Jeśli chcesz to zrobić ogólnie, utwórz ciąg, a następnie wydrukuj go raz. Zuży to trochę pamięci dla ciągu, ale wykona tylko jedno wywołanie
print
. Zauważ, że użycie konkatenacji ciągów+=
jest teraz liniowe względem rozmiaru łańcucha, który łączysz, więc będzie to szybkie.Lub możesz to zrobić bardziej bezpośrednio, używając sys.stdout . write () , który
print
jest opakowaniem wokół. Spowoduje to zapisanie tylko nieprzetworzonego ciągu, który mu podasz, bez żadnego formatowania. Zauważ, że żadna nowa linia nie jest drukowana nawet pod koniec 20a
sekund.Python 3 zmienia
print
instrukcję w funkcję print () , która umożliwia ustawienieend
parametru. Możesz go użyć w> = 2.6, importując z__future__
. Unikałbym tego jednak w każdym poważnym kodzie 2.x, ponieważ będzie to trochę mylące dla tych, którzy nigdy nie używali 3.x. Powinien jednak dać ci przedsmak dobrodziejstw, jakie niesie ze sobą 3.x.źródło
"".join(...)
zamiast tego.+=
w Pythonie jest operacją trwającą w czasie dla konkatenacji pojedynczego znaku.Z PEP 3105: drukuj jako funkcję w dokumencie What's New in Python 2.6 :
Oczywiście działa to tylko z Pythonem 3.0 lub nowszym (lub 2.6+ z literą
from __future__ import print_function
na początku).print
Oświadczenie zostało usunięte i stał sięprint()
funkcja domyślnie w Pythonie 3.0.źródło
Można pominąć spację, wypisując pusty ciąg na standardowe wyjście między
print
instrukcjami.Jednak czystszym rozwiązaniem jest najpierw zbudowanie całego ciągu, który chcesz wydrukować, a następnie wyprowadzenie go za pomocą pojedynczej
print
instrukcji.źródło
sys.stdout.write()
w tym przypadku używanie samego tylko jest wygodniejsze. Chciałem jednak pokazać, że zapisanie pustego ciągu na standardowe wyjście pomija odstępy między elementami napisanymi przy użyciuprint
, co może być przydatne w podobnych sytuacjach.Możesz wydrukować znak backspace (
'\b'
):wynik:
źródło
Python 3.x:
Python 2.6 lub 2.7:
źródło
Jeśli chcesz, aby pojawiały się pojedynczo, możesz to zrobić:
sys.stdout.flush()
jest konieczne, aby wymusić zapis znaku przy każdym uruchomieniu pętli.źródło
Na marginesie:
Drukowanie to O (1), ale budowanie ciągu, a następnie drukowanie to O (n), gdzie n to całkowita liczba znaków w ciągu. Więc tak, chociaż budowanie łańcucha jest „czystsze”, nie jest to najbardziej wydajna metoda zrobienia tego.
Sposób, w jaki bym to zrobił, jest następujący:
Teraz masz „funkcję drukowania”, która wypisuje dowolny podany przez Ciebie ciąg bez zwracania za każdym razem znaku nowego wiersza.
Wynik będzie wyglądał następująco: Hello, World!
Jeśli jednak chcesz wydrukować liczby całkowite, zmiennoprzecinkowe lub inne wartości niebędące ciągami, musisz przekonwertować je na ciąg za pomocą funkcji str ().
Wynik będzie następujący: 2 4
źródło
Albo to, co mówi Ant , albo zbierzesz w ciąg, a następnie wydrukuj raz:
źródło
bez czego? czy masz na myśli
?
źródło
to jest naprawdę proste
dla wersji Pythona 3+ wystarczy napisać następujące kody
po prostu przekonwertuj pętlę na następujące kody, nie musisz się martwić o inne rzeczy
źródło
ŁAŁ!!!
To było całkiem dawno temu
Teraz w Pythonie 3.x będzie to całkiem proste
kod:
wynik:
Więcej o funkcji print ()
Tutaj :
można drukować wiele wartości za pomocą przecinków
Trzy wartości zostaną oddzielone znakiem „-”
możesz użyć dowolnego znaku zamiast tego nawet łańcucha, takiego jak sep = '@' lub sep = 'good'
domyślnie funkcja drukowania umieszcza znak '\ n' na końcu wyjścia
ale możesz użyć dowolnego znaku lub ciągu, zmieniając wartość end variale
jak end = '$' lub end = '.' or end = 'Hello'
jest to wartość domyślna, standardowe wyjście systemu
używając tego argumentu możesz utworzyć strumień pliku wyjściowego, taki jak
za pomocą tego kodu utworzysz plik o nazwie output.txt, w którym będą przechowywane dane wyjściowe Jestem programistą
Jest to wartość domyślna przy użyciu flush = True , możesz wymusić opróżnienie strumienia
źródło
tak proste jak to
źródło