"Initialisierung" der Variablen in python?
Obwohl initialisieren von Variablen in python nicht notwendig, mein professor immer noch will, dass wir es tun, für die Praxis. Ich schrieb mein Programm und es funktionierte gut, aber nachdem ich versucht initialisiert einige Variablen, die ich bekam eine Fehlermeldung, als ich versucht habe, um es auszuführen. Hier ist der erste Teil von meinem Programm:
def main():
grade_1, grade_2, grade_3, average = 0.0
year = 0
fName, lName, ID, converted_ID = ""
infile = open("studentinfo.txt", "r")
data = infile.read()
fName, lName, ID, year = data.split(",")
year = int(year)
# Prompt the user for three test scores
grades = eval(input("Enter the three test scores separated by a comma: "))
# Create a username
uName = (lName[:4] + fName[:2] + str(year)).lower()
converted_id = ID[:3] + "-" + ID[3:5] + "-" + ID[5:]
grade_1, grade_2, grade_3 = grades
Die Fehlermeldung:
grade_1, grade_2, grade_3, average = 0.0
TypeError: 'float' object is not iterable
grade_1, grade_2, grade_3, average = 0.0, 0.0, 0.0, 0.0
grade_1 = grade_2 = grade_3 = average = 0.0
- Tut mir Leid, aber "die Praxis" für was? Was andere unnötige Dinge sind, die Sie praktizieren, die in dieser Klasse?
- Haha es ist Praxis, wenn (wenn) wir nehmen Klassen, die auf anderen Sprachen
- Ich würde erwarten, dass die Python-Klasse zu decken Python, mit Strategien für andere Sprachen abgedeckt wird, die in Ihren jeweiligen Klassen... =\
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das Problem ist in der Zeile -
und
In python, wenn die linke Seite des zuweisungsoperators hat mehrere Elemente zugeordnet werden, python versuchen würde die Iteration der rechten Seite, dass viele Male, und weisen jeweils iterierten Wertes zu jeder Variablen nacheinander.
Müssen Sie möglicherweise so etwas wie -
Gibt es mehrere Möglichkeiten der Zuordnung die gleichen Variablen.
Dem einfachsten:
Beim Auspacken:
Liste mit Verständnis und Auspacken:
Ich weiß, Sie haben bereits akzeptiert, eine andere Antwort, aber ich denke, dass das breitere Problem muss angesprochen - Programmierung Stil, der geeignet ist, um die aktuelle Sprache.
Ja, 'Initialisierung' ist es nicht notwendig, in Python, aber was du tust ist nicht
die Initialisierung. Es ist nur eine unvollständige und fehlerhafte Nachahmung der Initialisierung so geübt in anderen Sprachen. Die wichtige Sache, über die Initialisierung in statisch typisierten Sprachen ist, dass Sie angeben, die Art der Variablen.
In Python, wie in anderen Sprachen, die Sie brauchen zu geben, die Variablen Werte, bevor Sie Sie verwenden. Aber geben Sie die Werte an den Anfang der Funktion nicht wichtig ist, und auch falsch, wenn die Werte, die Sie geben, haben nichts zu tun mit den Werten, die Sie erhalten später. Das ist nicht 'Initialisierung', es ist 'Wiederverwendung'.
Werde ich einige Anmerkungen und Korrekturen zu deinem code:
That isn't 'initialization', it's 'reuse'
.Python behandelt Komma auf der linken Seite des Gleichheitszeichens (
=
) als input splitter,Sehr nützlich für Funktionen, die ein Tupel.
e.g,
Was Sie tun möchten, ist:
obwohl das vielleicht nicht der beste Weg, es zu schreiben.
Du fragst initialisiert die vier Variablen mit einer einzigen float-Objekt, das ist natürlich nicht durchsuchbar. Sie tun kann -
grade_1, grade_2, grade_3, grade_4 = [0.0 for _ in range(4)]
grade_1 = grade_2 = grade_3 = grade_4 = 0.0
Es sei denn, Sie möchten, initialisieren Sie Sie mit anderen Werten natürlich.
range(0,4)
, wenn Sierange(4)
es beginnt automatisch bei 0 . Auch, besser zu nutzenxrange
in python 2.x für eine bessere Speicherauslastung.Wenn Sie möchten, verwenden Sie das destructuring assignment, benötigen Sie die gleiche Anzahl von Schwimmern, wie Sie die Variablen haben: