2014-09-03 8 views
6

chcę wydrukować coś, co wygląda tak:Korzystanie .format(), aby wydrukować zmiennej ciąg i numer zaokrąglony

Witam | 7,16

Jest to kod używam

MyString = 'Hello' 
MyFloat = 7.157777777 
print "{} ¦ {0:.2f}".format(MyString, MyFloat) 

Ale pojawia się błąd:

ValueError: cannot switch from automatic field numbering to manual field specification 

Gdy próbuję:

MyString = 'Hello' 
MyFloat = 7.157777777 
print "{s} ¦ {0:.2f}".format(MyString, MyFloat) 

lub STR zamiast s pojawia się błąd:

KeyError: 's' 

pomysłów w jaki sposób można drukować zmienną ciąg z zaokrąglonym pływaka? Czy jest coś, co powinienem używać?

Odpowiedz

16

Używasz numerowanego odniesienia w drugim polu; 0 wskazuje, że chcesz użyć pierwszego parametru przekazanego do str.format() (np. MyString), a nie wartości MyFloat, która jest parametrem 1. Nie można użyć formatu .2f na obiekcie tekstowym, ponieważ pojawi się błąd

Usuń 0:

print "{} ¦ {:.2f}".format(MyString, MyFloat) 

jako pola bez nazwy lub numeru indeksu są automatycznie numerowane lub użyj prawidłowy numer:

print "{} ¦ {1:.2f}".format(MyString, MyFloat) 

Jeśli wybierzesz to drugie, to lepiej jawnie i konsekwentnie używaj 0 dla pierwszego elementu zastępczego:

print "{0} ¦ {1:.2f}".format(MyString, MyFloat) 

Inną opcją jest użycie nazwanych nazwy:

print "{s} ¦ {f:.2f}".format(s=MyString, f=MyFloat) 

zanotować słów kluczowych argumentów do str.format() tam.