Tuples und Dictionaries

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benutzeravatar
Sophus
User
Beiträge: 1109
Registriert: Freitag 25. April 2014, 12:46
Wohnort: Osnabrück

Was ist daran so verkehrt, wenn man mal eben nicht zu jene gehört, dich sich mit IPython nicht anfreunden wollen, und gerne über Editor, Notepad++, IDLE und der normalen PythonShell arbeiten wollen? Für mich ist es eben eine angenehme Umgebung, weil ich somit für mich einen kleinen Einstieg in die Materie bekommen habe, und zwar weiß cih schon mal, wie man mit IDLE arbeitet, die Codes ausführt etc. Und ich denke, es ist nicht verkehrt, wenn sich erstmal darauf aufbaut. Ich mag mich eben nicht von einem Punkt zum nächst schicken lassen, nur weil es unter euch so Gang und Gäbe ist. Darüber möchte ich jetzt auch nicht diskutieren. Punkt, und aus.

Sophus
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Meine Güte noch mal... deine ganzen Widerworte hier zu tippen und seit zig Postings alles immer in Frage stellen hat doch verdammt noch Mal länger gedauert, als einmal eine Comanndo-Shell (unter Windows cmd oder powershell) zu öffnen, "python" ein zu tippen und dann einige der Dinge auszuprobieren!

Du machst auf mich nicht den Eindruck eines Lehrers, sondern eher den eines aufmüpfigen, rebellischen Schülers, der *keinen* Ratschlag von erfahrenen Menschen akzeptieren will.

So wirst Du Dich als Einzelkämpfer durchschlagen müssen - nur frage dich einmal: Was suchst Du hier im Forum? Wirklich Hilfe oder eher Streit? Hast Du den Eindruck, dass Du hier mit Deiner Art "ankommst"? Würdest Du Dich im echten Leben auf einer "Party" auch so verhalten? Magst Du es, dermaßen anzuecken?

Ich habe einfach nicht den Eindruck, dass Du wirklich Interesse an Hilfe hast und den Rat von Leuten suchst. Du willst eher provozieren oder suchst tatsächlich Bestätigung dafür, wie toll doch Dein Vorgehen ist. Beides wirst Du hier auf Dauer nicht bekommen fürchte ich... zumindest nicht von mir. Ich verabschiede mich, bis Du auf mich einen besseren Eindruck machst. Eine zweite Chance hat jeder verdient, aber aktuell haben wir beide keinen Nutzen von weiterer Kommunikation :-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
Sophus
User
Beiträge: 1109
Registriert: Freitag 25. April 2014, 12:46
Wohnort: Osnabrück

Na toll. Das regt mich schon wieder auf. Meine Grundfrage, war, was es sich mit Tupels und Dictionaries auf sich hat, und Dank euch, die dann erstmal über eure wunderbare Shell unterhalten habt, dachte ich mir "Installiere es mal fix" und darf mich jetzt daran rumspielen, weil es irgendwie nicht starten will. Klasse. Da hat man sich schon mal in seine eigene Umgebung eingearbeitet, und da musst ihr um die Ecke kommen (wenn auch viellecht als gut gemeinter Rat, aber der Schuss dabei dennoch nach hinten losging), und meint erstmal, dass ich mich mit der IPython-Shell auseinandersetzen soll. Großes Kino. Wieder mal vergeudete 10 Minuten, nur weil ich am Ende nachgab, das versuchte zu installieren, am Ende scheiterte und mich fragte, wieso ich nicht einfach auf mich selbst gehört habe und in gewohnter Manier in meiner Umgebung geblieben bin. Weitere Ratschläge bezüglich der Umgebungen möchte ich also nicht mehr lesen. Jeder macht es wie er es will, am Ende ist das Ziel entscheidend. Wenn ich also konkrete Fragen habe, erwarte ich auch nur konkrete Antworten.

Danke.
Sophus
BlackJack

@Sophus: Ähm, keiner will Dich zu IPython zwingen, Du hast vorher ja auch die Shell IDLE und die normale Python-Shell in einem Terminalfenster schon abgelehnt. Du möchtest Python lernen, aber nichts so machen wie man das üblicherweise macht. Also willst Du eigentlich gar nicht Python lernen. So kommt das jedenfalls rüber. :K
Benutzeravatar
pillmuncher
User
Beiträge: 1484
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

@Sophus: Der erste Beitrag, wo jemand (Hyperion) dir empfahl, etwas in einer Shell einzugeben, war dieser hier: http://www.python-forum.de/viewtopic.ph ... 86#p259286. Bis dahin hatte auch niemand gesagt, du solltest IPython installieren. Das erste Mal, dass jemand (wieder Hyperion) IPython ins Spiel brachte, war dieser Beitrag: http://www.python-forum.de/viewtopic.ph ... 00#p259300. Dort lese ich allerdings nur, dass Hyperion eben IPython verwendet, aber nicht, dass du das auch unbedingt tun musst. Dort steht: "Du kannst es ja mal ausprobieren". Im Kontext ist es nicht entscheidbar, ob Hyperion meinte "Du kannst ja mal IPython ausprobieren" oder "Du kannst ja mal ausprobieren, den Code in einer Shell deiner Wahl einzugeben". Vor die Wahl gestellt, würde ich erstmal letzteres machen. Hast du das schon getan? Für jemand, der nur ungern theoretisch, dafür aber lieber praktisch lernen möchte, wäre das doch eine ideale Vorgehensweise, oder nicht? Was kommt dabei raus, wenn du das hier in eine Python-Shell eingibst:

Code: Alles auswählen

myArray = ['Mike','Peter','Anna']
type(myArray)
?
In specifications, Murphy's Law supersedes Ohm's.
Benutzeravatar
Sophus
User
Beiträge: 1109
Registriert: Freitag 25. April 2014, 12:46
Wohnort: Osnabrück

BlackJack hat geschrieben:@Sophus: Ähm, keiner will Dich zu IPython zwingen, Du hast vorher ja auch die Shell IDLE und die normale Python-Shell in einem Terminalfenster schon abgelehnt. Du möchtest Python lernen, aber nichts so machen wie man das üblicherweise macht. Also willst Du eigentlich gar nicht Python lernen. So kommt das jedenfalls rüber. :K
Diese lautlosen Unterstellungen immer. Ich arbeite mit IDLE, Notepad++ und Python Shell, und fertig. Ich denke, damit bin ich auf dem guten Wege Python zu lernen oder sehe ich das jetzt falsch? Nein? Ja, dann ist ja alles gut.
Benutzeravatar
Sophus
User
Beiträge: 1109
Registriert: Freitag 25. April 2014, 12:46
Wohnort: Osnabrück

pillmuncher hat geschrieben:@Sophus: Der erste Beitrag, wo jemand (Hyperion) dir empfahl, etwas in einer Shell einzugeben, war dieser hier: http://www.python-forum.de/viewtopic.ph ... 86#p259286. Bis dahin hatte auch niemand gesagt, du solltest IPython installieren. Das erste Mal, dass jemand (wieder Hyperion) IPython ins Spiel brachte, war dieser Beitrag: http://www.python-forum.de/viewtopic.ph ... 00#p259300. Dort lese ich allerdings nur, dass Hyperion eben IPython verwendet, aber nicht, dass du das auch unbedingt tun musst. Dort steht: "Du kannst es ja mal ausprobieren". Im Kontext ist es nicht entscheidbar, ob Hyperion meinte "Du kannst ja mal IPython ausprobieren" oder "Du kannst ja mal ausprobieren, den Code in einer Shell deiner Wahl einzugeben". Vor die Wahl gestellt, würde ich erstmal letzteres machen. Hast du das schon getan? Für jemand, der nur ungern theoretisch, dafür aber lieber praktisch lernen möchte, wäre das doch eine ideale Vorgehensweise, oder nicht? Was kommt dabei raus, wenn du das hier in eine Python-Shell eingibst:

Code: Alles auswählen

myArray = ['Mike','Peter','Anna']
type(myArray)
?
Meine Python Shell sagt einfach:
<type 'list'>
Also ist das, was ich bisher als Array gehalten habe, im Grunde ein Listen von Elementen? In dem Beispiel wurde Mike, Peter und Anna gelistet?
BlackJack

@Sophus: *Du* hast geschrieben Du schreibst es lieber im Editor und führst es dann aus, auf den Vorschlag eine interaktive Shell zu verwenden. Und jetzt unterstelle ich Dir das ”lautlos”?
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Sophus hat geschrieben:Also ist das, was ich bisher als Array gehalten habe, im Grunde ein Listen von Elementen? In dem Beispiel wurde Mike, Peter und Anna gelistet?
Die Liste besteht aus 3 Strings. Diese Strings haben die Inhalte 'Mike', 'Peter' und 'Anna' (ohne die Anführungszeichen, denn die kennzeichnen nur einen String, gehören aber nicht zum Inhalt).

Um die Daten auszugeben kannst du über die Inhalte dieser Liste iterieren.

Code: Alles auswählen

data = ['Mike', 'Peter', 'Anna']
for name in data:
    print(name)
name bekommt jetzt in der Schleife der Reihe nach jedes Element der Liste zugewiesen (durch das for...in) und wird durch print ausgegeben.
Benutzeravatar
Sophus
User
Beiträge: 1109
Registriert: Freitag 25. April 2014, 12:46
Wohnort: Osnabrück

/me hat geschrieben:
Sophus hat geschrieben:Also ist das, was ich bisher als Array gehalten habe, im Grunde ein Listen von Elementen? In dem Beispiel wurde Mike, Peter und Anna gelistet?
Die Liste besteht aus 3 Strings. Diese Strings haben die Inhalte 'Mike', 'Peter' und 'Anna'.

Um die Daten auszugeben kannst du über die Inhalte dieser Liste iterieren.

Code: Alles auswählen

data = ['Mike', 'Peter', 'Anna']
for name in data:
    print(name)
name bekommt jetzt in der Schleife der Reihe nach jedes Element der Liste zugewiesen (durch das for...in) und wird durch print ausgegeben.
Ich danke dir :-) Du schriebst, dass man es ohne Anführungszeichen tun soll. Natürlich habe ich es auch gleich mal mit Anführungszeichen ausprobiert:

Code: Alles auswählen

data = ["Mike", "Peter", "Anna"]
for name in data:
    print(name)
Und das Ergebnis waren die gleichen.
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Sophus hat geschrieben:Du schriebst, dass man es ohne Anführungszeichen tun soll.
Nein, nicht wirklich. Ich schrieb, dass die Anführungszeichen nicht Teil des Stringinhalts sind. Sie sind sehr wohl Teil der Stringdefinition im Programmcode.

Python erlaubt dabei sowohl einfache wie auch doppelte Anführungszeichen. Die Definitionsmöglichkeiten für Strings findest du sehr weit vorne im offiziellen Tutorial im Kapitel Strings.
Benutzeravatar
Sophus
User
Beiträge: 1109
Registriert: Freitag 25. April 2014, 12:46
Wohnort: Osnabrück

[quote="Hyperion"]
Du hast in Deinem Code bisher *kein* Objekt verändert, auch kein Dictionary ;-)

Beispiel:

Code: Alles auswählen

# Listen kennen z.B. "append"
l = [1, 2, 3]
# jetzt *verändern* wir das Objekt!
l.append(4)

print(l)
> [1, 2, 3, 4]

# Tupel haben nichts, um den Inhalt zu ändern!
t = (1, 2, 3)

# Dictionaries lassen sich auch erweitern:
d = {"foo": 42}
d["bar"] = 99
print(d)
> {'foo': 42, 'bar': 99}
Damit ich Hyperions Beispiel verstehe, kopiere ich sie nochmal, und versehe sie mit meinen Kommentaren, sowie wie ich eben mit meinem Verständnis komme. Auf weitere Ergänzungen würde ich mich freuen - das heiß ERKLÄRUNGEN und keine Belehrungen, von wegen, mir fehlen noch Grundlagen. Da das geklärt ist, beginne ich einfach mal.

Code: Alles auswählen

# Listen kennen z.B. "append"
l = [1, 2, 3] # Hier wird eine Liste erzeugt. Vorhanden sind hier drei Elemente
# jetzt *verändern* wir das Objekt!
l.append(4) # Hier werden die Elemente in die Liste geladen. Aber was sagt hier die 4?
                # Ich weiß, dass die 4 ein Argument sein soll, aber wieso die 4?
                # Soll es heißen, anstatt 3 sollen nun 4 Elemente in die Liste geladen werden?

print(l) # Hier wird die Liste in der Konsole / im Terminal ausgegeben.
> [1, 2, 3, 4] # Da vorher aber 3 Elemente in die Liste geladen wurde, aber man 4
                   # Elemente in die Liste laden will, hat man hier nun 4 Elemente eingegeben?

# Tupel haben nichts, um den Inhalt zu ändern!
t = (1, 2, 3) # Hier handelt es sich um einen Tupel.

# Dictionaries lassen sich auch erweitern:
d = {"foo": 42} # Hier ist foo nur ein String, eben weil es in Anführungszeichen steht.
                     # Was aber besagt die 42 und der Doppelpunkt davor? Ich weiß, 
                     # das im Kontext einer If-Bedingung ein Doppelpunkt beim Else: die
                     # Schleife beendet. Den Doppelpunkt setzt man auch bei einer Funktion "def blahblah ():". 
d["bar"] = 99    # Was ist d["bar"]? Was mich hier verwundert, ist, dass ein Gleichheitszeichen zwischen
                     # d und ["bar"] fehlt und dahinter = 99 steht. Was besagt das hier?
print(d)           # print-Anweisung
> {'foo': 42, 'bar': 99} # Und hier weiß ich auch nicht wirklich weiter.
BlackJack

@Sophus: Du hast angeblich in VB6 programmiert und hast auf Lehramt studiert, und stellst dann *solche* Fragen? Ernsthaft? Der Trick beim trollen ist es nicht zu sehr zu übertreiben. ;-)

Sollten die Fragen tatsächlich ernst gemeint sein, dann lass das Programmieren bleiben. Das ist ganz offensichtlich nichts für Dich. Und such Dir professionelle Hilfe bei Deinen sonstigen Problemen.
Benutzeravatar
Sophus
User
Beiträge: 1109
Registriert: Freitag 25. April 2014, 12:46
Wohnort: Osnabrück

BlackJack hat geschrieben:@Sophus: Du hast angeblich in VB6 programmiert und hast auf Lehramt studiert, und stellst dann *solche* Fragen? Ernsthaft? Der Trick beim trollen ist es nicht zu sehr zu übertreiben. ;-)

Sollten die Fragen tatsächlich ernst gemeint sein, dann lass das Programmieren bleiben. Das ist ganz offensichtlich nichts für Dich. Und such Dir professionelle Hilfe bei Deinen sonstigen Problemen.
Guten Morgen,

vielen Dank für deine rührende Worte. Deine Hilfsbereitschaft und deine sozialen Kompetenzen sind unübertrefflich. Sollte es jemals soweit mit mir sein, werde ich dich natürlich zu aller erst fragen. Immerhin bist du offensichtlich Koryphäe auf diesem Gebiet und kennst auch sehr gute Adressen. Seien wir doch mal ehrlich: Ich kann dich absolut verstehen, dass dich das hier alles etwas langweilt, um nicht zu sagen, schon nervt. Schau dich doch mal an, du bist mit großer Wahrscheinlich Stephen Hawkings Mentor. Während Stephen Hawking davon ausgeht, dass Schwarze Löcher sogar Licht verschlingen, verschlingst du Schwärze Löcher im Handumdrehen. Wenn dich das sehr stört, solltest du dich doch mal mit der Schattenseite des Mondes beschäftigen, BlackJack. Viele nennen es auch "Dort wo die Sonne nicht hin scheint. Ergo: Schattenseite des Mondes.

An allen anderen: Ich würde mich über eine Erklärung oder Ergänzung meiner Kommentare freuen.

Guten Morgen Weltfrieden.

Sophus
Sirius3
User
Beiträge: 17746
Registriert: Sonntag 21. Oktober 2012, 17:20

@Sophus: Du bist jetzt von der Trotzphase ("ich will aber, dass das so funktioniert") in die Warum-Phase eingetreten und stellst alles in Frage. Die wichtigste Phase hast Du aber gar nicht durchlebt: Das Ur-Vertrauen. Diese Phase ist wichtig, um überhaupt soziale Bindungen aufbauen zu können. Es wird das Verhalten der anderen imitiert und experimentiert.
Hier hast Du eine Liste zum Spielen:

Code: Alles auswählen

zahlen = [3, 5, 1]
print zahlen
schau mal, was man an die Liste da anhängen kann:

Code: Alles auswählen

zahlen.append(9)
print zahlen
Und bald darfst Du in den Kindergarten und mit den Programmen der großen Kinder spielen.
Benutzeravatar
Sophus
User
Beiträge: 1109
Registriert: Freitag 25. April 2014, 12:46
Wohnort: Osnabrück

Sirius3 hat geschrieben:@Sophus: Du bist jetzt von der Trotzphase ("ich will aber, dass das so funktioniert") in die Warum-Phase eingetreten und stellst alles in Frage. Die wichtigste Phase hast Du aber gar nicht durchlebt: Das Ur-Vertrauen. Diese Phase ist wichtig, um überhaupt soziale Bindungen aufbauen zu können. Es wird das Verhalten der anderen imitiert und experimentiert.
Hier hast Du eine Liste zum Spielen:

Code: Alles auswählen

zahlen = [3, 5, 1]
print zahlen
schau mal, was man an die Liste da anhängen kann:

Code: Alles auswählen

zahlen.append(9)
print zahlen
Und bald darfst Du in den Kindergarten und mit den Programmen der großen Kinder spielen.
Werter Sirius3,

ich Harry Potter danke dir. Anhand deiner beiden Beispiele habe ich nun verstanden, dass man zusätzlich zu der Variable (hier: "zahlen") durch die Argumente (hier: 9) beim append weitere Zahlen hinzufügen kann. Wenn ich das also verstanden habe, kann ich ja zur nächsten Frage übergehen. Alles was ich hier weiß, ist, dass man bei Dictionaries diese Klammern verwendet {}.

Code: Alles auswählen

# Dictionaries lassen sich auch erweitern:
d = {"foo": 42} # Hier ist foo ein Schlüssel, eben weil es in Anführungszeichen steht.
                     # Was aber besagt die 42 der Wert vom Schlüssel "foo" ist,  
d["bar"] = 99    # ABER was ist d["bar"]? Was mich hier verwundert, ist, dass ein Gleichheitszeichen zwischen
                     # d und ["bar"] fehlt und dahinter = 99 steht. Was besagt das hier?
print(d)           # print-Anweisung
> {'foo': 42, 'bar': 99} # Und hier wird gesagt: "zeige (print) mir den Schlüssel 'foo', dazu den Wert 42, 
                               # dann den Schlüssel 'bar' und dazu den Wert 99. Richtig?
                               # Wenn das alles stimmt, wo wurde hier die Dictionaries verändert? 
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

@Sophus: Ich glaube, du hast noch nicht so recht verstanden, wie die meisten Regulars (regelmäßig Aktive) dieses Forum verstehen: Man kann durchaus Anfängerfragen stellen - so blöde sie auch manchmal erscheinen mögen. Was aber gar nicht gern gesehen wird, ist wenn man bei jemandem den Eindruck hat, dass er sich rein gar nicht selbständig (dazu gehört auch das Studieren der offiziellen Dokumentation oder zumindest das Ergooglen von Grundlagen) mit dem Thema beschäftigt. Du bist so jemand und eckst zudem auch mit deinem zickigen Verhalten bei den Leuten an. Insofern finde ich den Vergleich mit einem kleinen Kind in Hinblick auf soziale Kompetenz, Lernverhalten, Selbständigkeit und Selbstreflexion gar nicht mal so schlecht.

Und nein, das war ganz offensichtlich kein inhaltlicher Beitrag von mir (zumindest nichts, was du erfragt hast), aber vielleicht geht dir ja doch irgendwann mal ein Licht auf, dass du ganz eventuell mal etwas an dir ändern solltest und dass eben *nicht* ausnahmslos alle außer dir selbst das Problem sind...
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Sophus hat geschrieben:Wenn ich das also verstanden habe, kann ich ja zur nächsten Frage übergehen.
Dieses Forum ist nicht dazu da um einen Python-Einführungskurs durchzuführen. Dazu ist es einfach das falsche Medium.

Warum arbeitest du nicht einfach mal selber das Tutorial durch und stellst bei konkreten Problemen Fragen dazu?
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Sophus hat geschrieben:

Code: Alles auswählen

> {'foo': 42, 'bar': 99} # Und hier wird gesagt: "zeige (print) mir den Schlüssel 'foo', dazu den Wert 42, 
                               # dann den Schlüssel 'bar' und dazu den Wert 99. Richtig?
Nein. Falsch. Probiere doch bitte die Codebeispiele einfach mal selber aus.

Diese Zeile stellt überhaupt keine Eingabe dar, sondern die Ausgabe des vorherigen print-Befehls.
BlackJack

@/me: Die trockene Theorie im Tutorial selbst durchzuarbeiten, dafür ist Sophus einfach nicht der Lerntyp. Der ist angehender Geschichtslehrer und weiss wovon er spricht. Glaub ihm das doch einfach mal. Und jetzt erklär ihm schnell jemand die Syntax und Semantik von literalen Wörterbüchern. Los, sonst heult er gleich wieder rum. Ich würd's ja selbst tun, aber Herr Hawking hat da gerade eine Frage um die ich mich zuerst kümmern muss. :twisted:
Antworten