Ich bin völlig neu in Python und Programmierung, aber ich versuche es zu lernen, mit mehr praktischen Ansatz.Wie erstelle ich eine Liste mit Namen von Funktionen?
Was ich versuche, ist eine Übung zum Konvertieren verschiedener Einheiten, z. Pfund -> Kilogramm, Fuß -> Meter usw.
Ich habe für verschiedene Einheitenpaare alle Funktionen definiert:
def kg_to_g(value):
return round(value*1000.0,2)
def g_to_kg(value):
return round(value/1000.0,2)
def inch_to_cm(value):
return round(value*2.54,2)
def cm_to_inch(value):
return round(value/2.54,2)
def ft_to_cm(value):
return round(value*30.48,2)
usw.
und eine Liste mit den Namen dieser Funktionen erstellt:
Das Programm sollte nach dem Zufallsprinzip ein Einheitspaar (z. B. kg-> Pfund) und Wert (z. B. 134,23) auswählen, und der Benutzer wird aufgefordert, diese Werte zu konvertieren.
random_unit = random.choice(unit_list)
lower = 0.1001
upper = 2000.1001
range_width = upper - lower
ranval = round(random.random() * range_width + lower, 2)
Wenn Benutzer Antwort kommt, sollte das Programm Antwort mit den durch die Funktion definiert Berechnungen vergleichen und Benutzer sagen, ob es eine richtige Antwort oder falsche Antwort ist:
def input_handler(answer):
if answer == random_unit(ranval):
label2.set_text("Correct!")
else:
label2.set_text("Wrong!")
Leider auf diese Weise Programm doesn‘ t Arbeit und codesculptor (codesculptor.org) kehrt mit einem Fehler
TypeError: 'str' object is not callable
Könnte jemand mir bitte erklären, was mit dem Code falsch ist, und legt nahe, etwas th zu lösen Das Problem.
Fügen Sie 'random_unit = globals() [random_unit]' nach 'random_unit = random.choice (unit_list)' hinzu. –
'random_unit = random.choice (unit_list)': Diese Zeile weist 'random_unit' ein zufälliges Element' unit_list' zu (das ist eine Liste von 'str'). Sie rufen dann 'random_unit (ranval)' auf, also verwenden Sie eine 'str' wie eine Funktion (eine aufrufbare Funktion ist ein anderer Name für die Funktion). – kjaquier