W Pythonie 2 użyłem:
print "a=%d,b=%d" % (f(x,n),g(x,n))
Próbowałem:
print("a=%d,b=%d") % (f(x,n),g(x,n))
python
string
python-3.x
Mike L.
źródło
źródło
%
zawsze był operatorem łańcuchowym, niezwiązanym zprint
instrukcją. Możesz na przykład utworzyć ciąg za pomocąs="a=%d,b=%d"%(f(x,n),g(x,n))
, a następnie wydrukować ten ciąg za pomocąprint s
.Odpowiedzi:
W Pythonie2
print
było słowo kluczowe, które wprowadzało instrukcję:W Pythonie3
print
jest to funkcja, która może zostać wywołana:W obu wersjach
%
jest operatorem, który wymaga łańcucha po lewej stronie i wartości lub krotki wartości lub obiektu mapującego (takiego jakdict
) po prawej stronie.Twoja linia powinna więc wyglądać następująco:
Ponadto zaleceniem dla Python3 i nowszych jest użycie
{}
formatowania -styl zamiast formatowania -styl%
:Python 3.6 wprowadza kolejny paradygmat formatowania ciągów : f-strings .
źródło
print('a={first:4.2f}, b={second:03d}'.format(first=f(x,n),second=g(x,n)))
gdzie ten przykład pokazuje, jak możesz użyć modyfikatorów w stylu printf i nadal używać słów kluczowych.Najbardziej zalecanym sposobem jest użycie
format
metody. Przeczytaj więcej na ten temat tutajźródło
Prosta funkcja printf () z książki O'Reilly's Python Cookbook .
Przykładowe dane wyjściowe:
źródło
PRINT
iFORMAT
...? Cofnij się w czasie 60+ lat do czasówPython 3.6 wprowadził f-stringi do interpolacji liniowej. Jeszcze ładniejsze jest to, że rozszerzył składnię, aby umożliwić również specyfikatory formatu z interpolacją. Coś, nad czym pracowałem, przeglądając to w Google (i natknąłem się na to stare pytanie!):
PEP 498 ma szczegóły. I ... posortował moje zdenerwowanie ze specyfikatorami formatu w innych językach - pozwala na specyfikatory, które same mogą być wyrażeniami! Yay! Zobacz: Specyfikatory formatu .
źródło
Prosty przykład:
print("foo %d, bar %d" % (1,2))
źródło
Prostszy.
Następnie:
źródło
Ponieważ twój
%
jest pozaprint(...)
nawiasami, próbujesz wstawić zmienne w wyniku swojejprint
rozmowy.print(...)
powracaNone
, więc to nie zadziała, i jest też drobna kwestia, że już wydrukowałeś swój szablon do tego czasu, a podróże w czasie są zabronione przez prawa wszechświata, w którym zamieszkujemy.Cała rzecz, którą chcesz wydrukować, łącznie z
%
operandem i jego operandem, musi znajdować się wewnątrz twojegoprint(...)
wywołania, aby łańcuch mógł zostać zbudowany przed jego wydrukowaniem.Dodałem kilka dodatkowych spacji, aby było wyraźniej (choć nie są one konieczne i generalnie nie są uważane za dobry styl).
źródło
Innymi słowy printf nieobecny w Pythonie ... Jestem zaskoczony! Najlepszy kod to
Dzięki temu formularzowi nie można drukować \ n. Wszyscy inni nie. Dlatego druk jest złym operatorem. A także potrzebujesz pisać argumenty w specjalnej formie. Powyżej nie ma żadnych wad w działaniu. Jest to standardowa zwykła forma funkcji printf.
źródło
źródło