Ich habe weniger als ein Jahr Programmiererfahrung. Beim Lernen über das Lesen und Schreiben von Dateien bin ich auf dieses Tutorial gestoßen: http://www.penzilla.net/tutorials/python/fileio/
Der Lehrgang bietet das folgende Beispiel als einfaches Skript zum Erstellen und Schreiben in eine Datei:
# Let's create a file and write it to disk.
filename = "test.dat"
# Let's create some data:
done = 0
namelist = []
while not done:
name = raw_input("Enter a name:")
if type(name) == type(""):
namelist.append(name)
else:
break
# Create a file object:
# in "write" mode
FILE = open(filename,"w")
# Write all the lines at once:
FILE.writelines(namelist)
# Alternatively write them one by one:
for name in namelist:
FILE.write(name)
FILE.close()
Ich habe diesen Code kopiert und ihn durch eine Python 2.7.3 Shell laufen lassen. Ich werde immer wieder aufgefordert, Zeichenketten einzugeben, die an eine Liste angehängt werden, die in eine Datei geschrieben wird (das macht für mich Sinn). Was ich nicht verstehe, ist die Bedingung für das Verlassen der While-Schleife ("While not done:"). Ich dachte, dies bedeute, dass ich done an der Eingabeaufforderung eintippe, um die Schleife zu beenden und anschließend die Datei zu schreiben, aber done hat keine Wirkung. Dann dachte ich, dass jede Nicht-Zeichenfolge, die an der Eingabeaufforderung eingegeben wird, die Schleife unterbrechen und die Datei schreiben sollte. Ich konnte die Schleife überhaupt nicht unterbrechen; bei jeder Eingabe an der Eingabeaufforderung wurde ich lediglich erneut mit "Enter a name:" aufgefordert.
Indem ich die While-Schleife entfernte und die if/else-Anweisung beibehielt, konnte ich den Code für eine einzelne Eingabeaufforderung zum Laufen bringen. Kann mir jemand sagen, was ich hier nicht verstehe? Ich vermute, dass es sich um ein recht einfaches Konzept handelt, das im Lernprogramm nicht erklärt wurde, weil man davon ausging, dass es offensichtlich ist. Da "done" ein so gängiges Wort ist, konnte ich keine Python-spezifische Bedeutung dafür finden.