8

OK Stavo esaminando la formattazione numerica e ho scoperto che è possibile utilizzare % d o % i per formattare un numero intero. Per esempio:Qual è la differenza tra% i e% d in Python?

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

o

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

Ma qual è la differenza? Voglio dire, ho trovato qualcosa, ma era totalmente riduttivo. Qualcuno parla Mild-Code o inglese qui?

+1

Python utilizza le convenzioni C qui, la stessa risposta vale. –

+0

Se si desidera eseguire l'aggiornamento a python 3, si consiglia di prendere l'abitudine di utilizzare parens attorno al corpo di stampa, poiché la stampa è una funzione in python 3. – tjameson

+0

@MartijnPieters In realtà non lo capisco. Stavo cercando un po 'di inglese lol –

risposta

16

Python ha copiato le istruzioni di formattazione C.

Per uscita, %i e %d sono la stessa identica cosa, sia in Python e in C.

La differenza sta in ciò che essi fanno quando li si utilizza per analizzare ingresso, in C utilizzando la funzione scanf(). Vedi Difference between format specifiers %i and %d in printf.

Python non hai scanf equivalente, ma la stringa Python formattazione operazioni mantenuto le due opzioni per rimanere compatibile con C.

Il nuovo str.format() e format()format specification mini-language cessato il supporto per i e bloccato con solo d.

+0

OK, grazie, è un po 'più facile da capire :) –

+0

Il nuovo mini-linguaggio delle specifiche di formato potrebbe aver eliminato 'i', ma ha aggiunto' n', che è quasi uguale a 'i' tranne che al suo numero di impostazioni internazionali. separatore-saggio. – martineau

+0

@martineau: il che significa che * non * è la stessa cosa di 'd'. 'i' * è * uguale a' d'. –

2

non v'è alcuna, vedere il manuale di Python stringa di formattazione: http://docs.python.org/2/library/stdtypes.html#string-formatting

+0

Ci deve essere una ragione anche se vero? –

+0

La formattazione dell'output delle stringhe in Python è ovviamente ispirata da C. Martijn Pieters ti indicava già la giusta direzione: [Differenza tra gli specificatori di formato% i e% d in printf] (http: // stackoverflow.it/questions/1893490/difference-between-format-specifiers-i-and-d-in-printf) – Sven

1

Nessuna differenza.

Ed ecco the proof.

Il motivo per cui ci sono due è che,% i è solo un'alternativa al% d, se si vuole guardare a un livello elevato (dal punto di pitone di vista).

Ecco cosa python.org ha da dire su% i: Signed integer decimal.

E% d: Signed integer decimal.

% d sta per decimali e% i per intero.

ma entrambi sono uguali, è possibile utilizzare entrambi.

+0

@malcolmk ho risposto e ragionato perché ci sono 2 scelte – tenstar

+0

Sembra ragionevole, ma non lo sapremo mai di sicuro dal richiederebbe la capacità di leggere le menti in passato ... – martineau

+0

sì! hai ragione! – tenstar

Problemi correlati