Python: unikaj nowej linii poleceniem print [duplicate]
To pytanie ma już odpowiedź tutaj:
- Jak drukować bez znaku nowej linii lub spacji? 25 odpowiedzi
Zacząłem dziś programować i mam taki problem z Pythonem. To dość głupie, ale nie wiem, jak to zrobić. Kiedy używam polecenia Drukuj, drukuje to, co chcę, a następnie przechodzi do innej linii. Na przykład:
print "this should be"; print "on the same line"
Powinien zwrócić:
To powinno być na tej samej linii
Ale zamiast tego zwraca:
To powinno być
na tej samej linii
Dokładniej próbowałem stworzyć program z if
który powiedział mi, czy liczba jest 2 czy nie
def test2(x):
if x == 2:
print "Yeah bro, that's tottaly a two"
else:
print "Nope, that is not a two. That is a (x)"
Ale nie rozpoznaje ostatniej (x)
jako wprowadzonej wartości, a raczej wypisuje dokładnie: "(x) " (litera z nawiasami). Żeby się udało muszę napisz:
print "Nope, that is not a two. That is a"; print (x)
A jeśli np. wpiszę {[5] } to daje:
Nie, to nie jest dwójka, to jest
3
Więc albo muszę sprawić, by Python rozpoznał moje (x) w linii wydruku jako liczbę; albo wydrukować dwie różne rzeczy, ale w tej samej linii. Z góry dzięki i przepraszam za takie głupie pytanie.
WAŻNA UWAGA: używam wersji 2.5.4
Kolejna uwaga: jeśli wpiszę {[6] } na 2-gim piszą "błąd składni" Drukuj.
5 answers
W Python 3.x , możesz użyć argumentu end
do funkcji print()
, aby zapobiec wypisaniu znaku nowej linii:
print("Nope, that is not a two. That is a", end="")
W Python 2.x, możesz użyć końcowego przecinka:
print "this should be",
print "on the same line"
Nie potrzebujesz tego, aby po prostu wydrukować zmienną:
print "Nope, that is not a two. That is a", x
Zauważ, że końcowy przecinek nadal powoduje wydrukowanie spacji na końcu wiersza, tzn. jest to równoważne użyciu end=" "
w Pythonie 3. Aby stłumić znak spacji, można albo użyć
from __future__ import print_function
Aby uzyskać dostęp do funkcji drukowania Pythona 3 lub użyj sys.stdout.write()
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-28 08:46:11
W Python 2.x po prostu umieść ,
na końcu twojego print
Oświadczenia. Jeśli chcesz uniknąć spacji, która print
umieszcza pomiędzy elementami, użyj sys.stdout.write
.
import sys
sys.stdout.write('hi there')
sys.stdout.write('Bob here.')
hi thereBob here.
Zauważ, że nie ma żadnej nowej linii ani pustej spacji pomiędzy tymi dwoma łańcuchami.
W Python 3.x, za pomocą funkcji print () , możesz po prostu powiedzieć
print('this is a string', end="")
print(' and this is on the same line')
I uzyskać:
this is a string and this is on the same line
Istnieje również parametr o nazwie sep
, który możesz ustawić drukowanie za pomocą Pythona 3.x, aby kontrolować, jak sąsiadujące ciągi znaków będą rozdzielane (lub nie w zależności od wartości przypisanej do sep
)
Np.,
Python 2.x
print 'hi', 'there'
Daje
hi there
Python 3.x
print('hi', 'there', sep='')
Daje
hithere
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-29 17:46:41
Jeśli używasz Pythona 2.5, to nie zadziała, ale dla osób korzystających z 2.6 lub 2.7, spróbuj
from __future__ import print_function
print("abcd", end='')
print("efg")
Wyniki w
abcdefg
Dla tych, którzy używają 3.x, to jest już wbudowane.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-29 17:18:07
Po prostu musisz zrobić:
print 'lakjdfljsdf', # trailing comma
Jednak w:
print 'lkajdlfjasd', 'ljkadfljasf'
Istnieje domyślna spacja (ie ' '
).
Masz również możliwość:
import sys
sys.stdout.write('some data here without a new line')
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-29 17:16:08
Użyj końcowego przecinka, aby zapobiec prezentacji nowej linii:
print "this should be"; print "on the same line"
Powinno być:
print "this should be", "on the same line"
Dodatkowo można po prostu dołączyć zmienną przekazywaną na koniec żądanego ciągu przez:
print "Nope, that is not a two. That is a", x
Możesz również użyć:
print "Nope, that is not a two. That is a %d" % x #assuming x is always an int
Możesz uzyskać dostęp do dodatkowej dokumentacji dotyczącej formatowania łańcuchów przy użyciu operatora %
(modulo).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-29 17:17:59