Wpis z mikrobloga

Co tu jest zle... :C

def animals():
animals = {
'dog' : 'woof',
'cat' : 'meow',
'cow' : 'mooo',
'pig' : 'oink',
'pigeon' : 'tweet',}
for k, v in animals.items():
print(k)
print(v)
print('Old MacDonald had a farm, Ee-igh, Ee-igh, Oh!')
print('And on that farm he had a {k}, Ee-igh, Ee-igh, Oh!').format(k)
print('With a {v}, {v} here and a {v}, {v} there.').format(v,v,v,v)
print('Here a {v}, there a {v}, everywhere a {v}, {v}.').format(v,v,v,v)
print('Old MacDonald had a farm, Ee-igh, Ee-igh, Oh!')

#python #programowanie #naukaprogramowania #it #programista15k
  • 15
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@farmaceut: mieszasz dwa style formatowania, to jest źle. Jeśli chcesz podawać argumenty do format po kolei (v,v,v,v) to nie możesz ich wewnątrz stringa formatowanego nazywać, tylko zostawić placeholdery w postaci {}. A jak chcesz koniecznie zostawić {v} i {k} to podawaj je do format z nazwami (tzw. kwargs), czyli format(v=v).
  • Odpowiedz
  • 0
@Slamowir: to bedzie w wersji PL ( ͡° ͜ʖ ͡°)
@dzikipies102: akurat to chyba nie ma wpływu?
@kao3991: hmmm... czyli to zadziała w dwóch przypadkach - zostawię {} i dam .format(V,V,V,V) ALBO robie placeholder np. {value}, a .format(V = value), dobrze rozumiem?
@dzikipies102: mmmmm a te cyfry to nie sa jakieś variable tylko?
  • Odpowiedz
@farmaceut: dokładnie to w trzech przypadkach zadziała. Albo placeholder {} i format(v), albo placeholder {0} i format(v) (0 - pierwszy parametr, 1 - drugi itd), albo {name} i format(name=v) - czyli ostatni przypadek odwrotnie niż napisałeś.
  • Odpowiedz
@farmaceut: cyfry też działają. Tylko ważne żeby rozumieć co kiedy najlepiej używać :) jak masz parametry po razie każdy to najlepiej {} po prostu i polegać na kolejności IMO, jak masz np. jeden czy parę i używasz po kilka razy w stringu to {0} {1} jest OK, jak masz jakoś dużo to se lepiej ponazywać bo dowolna modyfikacja tego i się pochlastasz zanim rozczytasz co jest co :)
  • Odpowiedz
@farmaceut: Funkcja print() zwraca wartość None. None nie posiada żadnych metod więc nie posiada metody format().

print('And on that farm he had a {k}, Ee-igh, Ee-igh, Oh!').format(k)
AttributeError: 'NoneType' object has no attribute 'format'

Zdaje się że chciałeś użyć format() na stringu kończącym się przed nawiasem.
  • Odpowiedz