Ich bin neu in der Programmierung und arbeite derzeit durch "Python-Programmierung: Eine Einführung in die Informatik, 2. Ausgabe" von Zelle.Probleme zu verstehen, was * (Sternchen) in Python Variablenzuweisung
Während ich an einer der Übungen in diesem Buch arbeitete, hatte ich Schwierigkeiten, die vom Autor zur Verfügung gestellte Lösung zu verstehen. Die Übung besteht im Wesentlichen darin, ein Programm zu erstellen, das einen Buchstabengrad für einen bestimmten Bereich von Punkten angibt.
Die Frage ist, wie folgt: „Ein gewisser Professor CS 100-Punkte-Prüfungen gibt, die 90-100 auf der Skala benotet: A, 80-89: B, 70-79: C, 60 bis 698: D , < 60: F. Schreiben Sie ein Programm, das eine Prüfungsnote als Eingabe akzeptiert und die entsprechende Note ausgibt. "
Hier meine eigenen Quellcode für die Übung ist:
score = float(input("Enter your quiz score: "))
if score >= 90:
print("You got an A.")
elif score >= 80:
print("You got a B.")
elif score >= 70:
print("You got a C.")
elif score >= 60:
print("You got a D.")
else:
print("You got a F.")
Und es funktioniert sehr gut, und aus meiner sucht, ist eine Standardlösung für ein solches Problem.
Dann Lösung des Autors ist wie folgt:
score = eval(input("Enter the score (out of 100): "))
grades = 60*"F"+10*"D"+10*"C"+10*"B"+11*"A"
print("The grade is", grades[score])
Was ich könnte so viel sauberer als die gesamte if-elif-else Brocken erwiesen mehr werden viel kurz und bündig mit nur zwei Linien ausgedrückt. Allerdings finde ich Mühe, die 2. Zeile seines Codes zu verstehen: Grade = 60 * "F" + 10 * "D" + 10 * "C" + 10 * "B" + 11 * "A" Wie funktioniert diese Zeile genau und was macht das * bei einer solchen Variablenzuordnung?
Verzeihen Sie, wenn es bereits eine ähnliche Frage gibt, die meine Frage beantwortet, aber die nächste, die ich finden konnte, war, was * in Parametern tut. Ich würde gerne einen Link dorthin verweisen, wenn das der Fall ist.
Danke für die Hilfe!
Ich würde vorsichtig sein über dieses Buch.Die Verwendung eines gefährlichen Werkzeugs wie "eval" ist unnötig, und während das Erstellen einer Zeichenfolge mit 101 Zeichen kein Problem darstellt, skaliert die Lösung nicht gut, wenn sie auf ähnliche Probleme angewendet wird, bei denen die Zeichenfolge länger ist. – user2357112
Oh, das ist ein guter Punkt zum Skalieren. Oh ja, ich habe die Gefahr in Bezug auf das Eval verstanden, weshalb ich float (input()) anstelle von eval verwendet habe. – Charles
Aber danke für das Heads-up. Ich werde vorsichtig sein! – Charles