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
/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: 17741
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: 6738
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