Seite 4 von 14

Re: Neuling sucht Rat

Verfasst: Samstag 23. März 2013, 22:11
von Tengel

Code: Alles auswählen


# Geografiespiel
hauptstadt = { "Italien": "Rom", "Spanien":"Madrid","Portugal":"Lissabon"}
hs = hauptstadt.items()

for land, stadt in hs:
    eingabe = input("bitte die Hauptstadt von "+land+" eingeben:")
    if eingabe==stadt:
        print("Richtig")
    else:
        print("Falsch richtig ist",stadt)


kann mir da bitte jemand
for land, stadt in hs:
erklären?

Re: Neuling sucht Rat

Verfasst: Samstag 23. März 2013, 22:16
von cofi
Ich gebe dir stattdessen einen Hinweis und ein Stichwort: Schau dir mal im Interpreter an, was `hs` ist und schlage "Tuple unpacking" (oder auch "sequence unpacking") im Tutorial nach.

Re: Neuling sucht Rat

Verfasst: Samstag 23. März 2013, 22:28
von Tengel
hauptstadt ist ein Dictionary
hs ist demzufolge ein view von hauptstadt in dem die Elemente(Schlüssel:Wert) gespeichert sind

Dann bedeutet
for land, stadt in hs:
das die Schleife so lange ausgeführt wird bis alle Land:Stadt Elemente durchgegangen sind?

Re: Neuling sucht Rat

Verfasst: Samstag 23. März 2013, 22:54
von cofi
Genau. Nur:

Code: Alles auswählen

>>> hauptstadt = { "Italien": "Rom", "Spanien":"Madrid","Portugal":"Lissabon"}
>>> list(hauptstadt.items())
[('Spanien', 'Madrid'), ('Italien', 'Rom'), ('Portugal', 'Lissabon')]
Was ich im speziellen meinte: `items` gibt dir einen Generator/View zurueck, der Tupel enthaelt.

Code: Alles auswählen

>>> hs = iter(hauptstadt.items())
>>> land, stadt = next(hs)
>>> land
'Spanien'
>>> stadt
'Madrid'
>>> land, stadt
('Spanien', 'Madrid')
>>> hs = iter(hauptstadt.items())
>>> next(hs)
('Spanien', 'Madrid')

Re: Neuling sucht Rat

Verfasst: Samstag 23. März 2013, 23:14
von Tengel
Dann sind die "items" quasi auch nur die jeweiligen Werte?

Re: Neuling sucht Rat

Verfasst: Sonntag 24. März 2013, 02:12
von Tengel
Hm okay - ..jetzt bin ich wohl an dem Punkt angekommen wo ich einfach nur ???????????? sehe - und ich bin noch nicht mal bei OOp
format()
ist ja mal total :shock:

Re: Neuling sucht Rat

Verfasst: Sonntag 24. März 2013, 09:28
von BlackJack
@Tengel: Wieso denn? Wo liegt das konkrete Problem?

Re: Neuling sucht Rat

Verfasst: Sonntag 24. März 2013, 16:11
von Tengel

Code: Alles auswählen


x = 100/7
y = 2/7
print("Zahlen:")
print(x,y)
print()

#2: Format f
print("Format f")
print("{0:f} {0:f}{1:f}".format(x,y))
print("{0:15.10f}{1:.25f}".format(x,y))
print()

#3: Format e
print("Format e")
print("{0:e}".format(x))
print("{0:12.3e}".format(x))
print("{0:3e}".format(x))
print()

#4: Format %
print("Format %")
print("{0:%}".format(y))
print("{0:12.3%}".format(y))
print("{0:3%}".format(y))


Das ist das "kleine" Beispiel aus dem Buch - ...es gibt noch eins das Fast 2 Seiten lang ist - und das hat schon wenig Spass gemacht zum abtippen - und die Erklärung dazu ist nahezu nicht existent.

Re: Neuling sucht Rat

Verfasst: Sonntag 24. März 2013, 16:40
von BlackJack
@Tengel: Da kann man in die Python-Dokumentation schauen. Das es '%' gibt wusste ich bisher noch gar nicht, und das einzige was ich bisher von den anderen gezeigten wirklich gebraucht habe ist 'f'. Ganz grob ist das 'a.bf' wobei a die Gesamtanzahl der Stellen und b die Stellen nach dem Komma angibt. Beides ist optional. Man kann bei a noch eine führende 0 angeben, dann wird auch vor dem Komma mit 0en aufgefüllt.

Re: Neuling sucht Rat

Verfasst: Sonntag 24. März 2013, 17:02
von Sirius3
@Tengel: format ersetzt Platzhalter in einem String durch Werte, die übergeben werden. Da man mit format verschieden Objekte unterschiedlich formatieren kann, ist die Dokumentation dazu entsprechend lang. Wenn Du aber einmal damit umgehen kannst, willst Du es nicht mehr hergeben ;-)

Re: Neuling sucht Rat

Verfasst: Sonntag 24. März 2013, 21:17
von Tengel
Traceback (most recent call last):
File "D:/Phyton/Übungen/ausgabe_tabelle.py", line 16, in <module>
print("{0:>4}{1:>12}{2:>4}{3:>13}{4:>13}",format("Nr","Name","Anz","EP","GP"))
TypeError: format() takes at most 2 arguments (5 given)



was genau will mir das sagen ...ich habs 1:1 wies im Buch steht - und die Ausgabe davor wird auch anders wie im Buch ausgegeben - langsam nimmt mir dieser format() sch... wirklich denn Spaß

Re: Neuling sucht Rat

Verfasst: Sonntag 24. März 2013, 21:33
von BlackJack
@Tengel: Du hast hier aus einem Punkt ein Komma gemacht und damit nicht die `format()`-Methode auf Zeichenketten sondern die eingebaute `format()`-Funktion aufgerufen.

Re: Neuling sucht Rat

Verfasst: Sonntag 24. März 2013, 21:48
von Tengel
Ja ist mir als ich mich an die Übung gemacht habe auch aufgefallen.
Behoben - jetzt kommt an einer anderen Stelle ein Fehler aber nun ja:>

Code: Alles auswählen

umrechnungsfaktor_inch = 2.54

print("{0:>7} {1:>7}".format("Inch","cm"))
for inch in range(15,41,5):
    print("{0:>7.2f} {1:>7.2f}".format(inch,inch*umrechnungsfaktor_inch))




Ist meine Lösung und die Ausgabe stimmt - ob das jetzt "richtig" programmiert ist lass ich mal im Raum stehen.

Re: Neuling sucht Rat

Verfasst: Sonntag 24. März 2013, 21:53
von mutetella

Code: Alles auswählen

umrechnungsfaktor_inch = 2.54

print("{0:>7} {1:>7}".format("cm","Inch"))
for cm in range(15,41,5):
    print("{0:>7.2f} {1:>7.2f}".format(cm,cm*umrechnungsfaktor_inch))
:wink:

Re: Neuling sucht Rat

Verfasst: Sonntag 24. März 2013, 21:55
von Tengel
Ok - warum genau ist meins nicht farbig?

Re: Neuling sucht Rat

Verfasst: Sonntag 24. März 2013, 21:58
von mutetella
Ich wollte jetzt gar nicht auf das highlighting hinweisen, sondern darauf, dass Du cm mit inch verwechselst...

[ code ] foo bar [ /code ]

vs.

[ python ] bzw. [ code=python ] foo bar [ /python ] bzw. [ /code ]

mutetella

Re: Neuling sucht Rat

Verfasst: Sonntag 24. März 2013, 22:11
von Tengel
Ja das ist mir nicht entgangen - aber das krieg ich gerade noch hin ohne Hilfe zu ändern :), im Gegensatz zur "bunten Ausgabe"

Re: Neuling sucht Rat

Verfasst: Sonntag 24. März 2013, 23:59
von Tengel
a = "Hallo Hallo Hallo Hallo"
print("{0:5}".format(a))



müsste das nicht eigentlich abgeschnitten werden?

Re: Neuling sucht Rat

Verfasst: Montag 25. März 2013, 00:15
von BlackJack
@Tengel: Nein, das ist eher als Minimalwert zu sehen. Wenn man abschneiden will kann man „slicing” auf der Zeichenkette verwenden.

Re: Neuling sucht Rat

Verfasst: Montag 25. März 2013, 01:41
von Tengel
Naja was heißt "wollen" ich dachte nur das der String halt so formatiert wird das er nur die angegebene Elementanzahl "unterbringen kann" - ist mir nur beim rumprobieren aufgefallen.