2013-03-05 14 views
7

Ich versuche, mich ein wenig Codierung durch das "learn python the hard way" Buch zu lehren und kämpfe mit% d /% s /% r beim Binden an Zeige eine Gleitkommazahl an. Wie übergibt man eine Fließkommazahl mit einem Formatzeichen? Zuerst versuchte ich% d, aber das ließ meine Antworten als Ganzzahlen anzeigen .... Ich hatte einige Erfolge mit% r, aber ich war unter der Annahme, dass dies normalerweise für das Debugging reserviert war. Ich habe herausgefunden, dass die Division in Python 2.x manuell verschoben werden muss, damit sie aus irgendeinem Grund richtig funktioniert.Python 2.7:% d,% s, und float()

Beispielcode:

def divide (a, b): 
    print "WE DIVIDING %r and %r NOW" % (a, b) 
    return a/float(b) 
print "Input first number:" 
first = float(raw_input("> ")) 
print "OK, now input second number:" 
second = float(raw_input("> ")) 

ans = divide(first, second) 
print "DONE: %r DIVIDED BY %r EQUALS %r, SWEET MATH BRO!" % (first, second, ans) 
+1

Use „% f“ - f für float – IamAlexAlright

Antwort

3

Versuchen Sie Folgendes:

print "First is: %f" % (first) 
print "Second is: %f" % (second) 

Ich bin nicht sicher, was für eine Antwort ist. Aber abgesehen davon wird dies sein:

Es gibt eine Menge Text auf Format String Specifiers. Sie können es googeln und eine Liste der Spezifizierer erhalten. Eine Sache habe ich vergessen zu beachten:

Wenn Sie versuchen, diese:

print "First is: %s" % (first) 

Er wandelt den Float-Wert in der ersten in einen String. Das würde also auch funktionieren.

+1

Interessant, nicht, dass% s ahnte es automatisch in einen String umwandeln würde am sind nur eine Variable, die ich als erste oder zweite verwendet habe. – user2134093

13

Siehe String Formatting Operations:

%d ist das Format Code für eine ganze Zahl ist. %f ist der Formatcode für ein Float.

%s druckt die str() eines Objekts (Was Sie sehen, wenn Sie print(object)).

%r druckt die repr() eines Objekts (Was Sie sehen, wenn Sie print(repr(object)).

Für einen Schwimmer% s,% r und% f alle den gleichen Wert anzuzeigen, aber das ist nicht der Fall für alle Objekte . Die anderen Felder einer Formatspezifizierer Arbeit auch anders:.

>>> print('%10.2s' % 1.123) # print as string, truncate to 2 characters in a 10-place field. 
     1. 
>>> print('%10.2f' % 1.123) # print as float, round to 2 decimal places in a 10-place field. 
     1.12