8

OK Szukałem formatowania liczb i odkryłem, że można użyć formatu % d lub % i do sformatowania liczby całkowitej. Na przykład:Jaka jest różnica między% i% d w Pythonie?

number = 8 
print "your number is %i." % number 

lub

number = 8 
print "your number is %d." % number 

Ale jaka jest różnica? Mam na myśli, że znalazłem coś, ale było totalnie jibbry. Czy ktoś mówi tutaj Mild-Code lub angielskim?

+1

Python używa tu konwencji C. Ta sama odpowiedź ma zastosowanie. –

+0

Jeśli kiedykolwiek chcesz uaktualnić do Pythona 3, polecam nabrać nawyku używania paren na korpusie wydruku, ponieważ print jest funkcją w python 3. – tjameson

+0

@MartijnPieters Naprawdę tego nie rozumiem. Szukałem trochę więcej angielskiego lol –

Odpowiedz

16

Python skopiował instrukcje formatowania C.

Dla wyjściu, %i i %d są dokładnie to samo, zarówno w Pythonie i C

Różnica tkwi w tym, co to robić, kiedy ich używać do analizowania wejście w C za pomocą funkcja scanf(). Zobacz Difference between format specifiers %i and %d in printf.

Python nie posiada scanf odpowiednik, ale ciąg Python operacji formatowania zachowane dwie opcje pozostają zgodne z C

Nowy str.format() i format()format specification mini-language spadło poparcie dla i i skazani tylko d.

+0

OK dziękuję, to trochę łatwiejsze do zrozumienia :) –

+0

W nowym języku specyfikacji formatu minął język "i", ale dodano 'n', który jest prawie taki sam jak" i ", z tym, że ma numer locale w sensie separatora. – martineau

+0

@martineau: Co oznacza, że ​​nie jest * to samo co 'd'. 'i' * jest * taki sam jak' d'. –

2

Nie ma żadnego, patrz Instrukcja Python String formatowanie: http://docs.python.org/2/library/stdtypes.html#string-formatting

+0

Musi być jakiś powód, prawda? –

+0

Formatowanie ciągów znaków w Pythonie jest oczywiście inspirowane przez C. Martijn Pieters wskazał ci już właściwy kierunek: [Różnica między specyfikatorami formatu% i% d w printf] (http: // stackoverflow.com/questions/1893490/difference-between-specyfikatory-i-and-d-in-printf) – Sven

1

nie ma różnicy.

A oto the proof.

Powodem są dwa to, że% i jest tylko alternatywą dla% d, jeśli chcesz spojrzeć na to na wysokim poziomie (z punktu Pythona widzenia).

Oto co ma do powiedzenia python.org o% I: Signed integer decimal.

i% d: Signed integer decimal.

% d oznacza przecinku oraz% I dla całkowitej.

ale oba są takie same, możesz użyć obu.

+0

@malcolmk Odpowiedziałem i uzasadniłem, dlaczego są 2 wybory – tenstar

+0

Wydaje się rozsądne, ale nigdy nie będziemy wiedzieć na pewno, ponieważ wymagałoby to umiejętności czytania w przeszłości ... – martineau

+0

tak! masz rację! – tenstar

Powiązane problemy