NameError: name 'randint' ist nicht definiert
options = [ "Choice 1: 1-9", "Choice 2: 10- 100", ]
button = buttonbox ( msg = "Choose your range of numbers", title = "Select number range", choices = options)
if button == "Choice 1: 1-9":
from random import randint
rn1 = randint(30,50)
from random import randint
rn2 = randint(30,50)
options = [ "Close"]
buttonbox ( msg = "%s X %s = ___" % (rn1, rn2), title = "Select number range", choices = options)
if button == "Choice 2: 10- 100":
from random import randint
rn2 = randint (10,100)
from random import randint
rn2 = randint (10,100)
options = [ "Close"]
buttonbox ( msg = "%s X %s = ___" % (rn1, rn2), title = "Select number range", choices = options)
Dies ist mein code, wenn ich versuche, und führen Sie die zweite Wahl, es sagt NameError: name 'randint' is not defined
obwohl der code exakt der gleiche wie die erste option, aber mit unterschiedlichen zahlen.
Irgendwelche Vorschläge?
- Warum haben Sie
from random import randint
abhängig von der user-Wahl? warum nicht einfach importieren Sie es trotzdem? also verschieben, dass die Linie über dieif
Aussagen und haben nur eine import-Anweisung import
Aussagen sind ausführbare Datei in Python, also nur etwas, wenn ein Teil der code-Pfad. Dieses problem wäre nicht passiert, wenn Sie gefolgt PEP 8 - Style Guide for Python Code, wo es deutet darauf hin, dass "Importiert immer an den Anfang der Datei, gleich nach jedem Modul Kommentare und docstrings, und vor Modul globals und Konstanten". Seit Ihrem code verwendenrandint
eine oder andere Weise, Sie könnte genauso gut erhalten, importieren Sie Sie aus dem Weg und befreien Sie sich von all den anderen Entlassungen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur import randint einmal am Anfang der Datei. Setzen
from random import randint
an der Spitze des Programms, und entfernen Sie es in allen anderen Orten. Ich denke, das ist, was Sie wollen:Ich vermute, dass die Taste nicht gleich ist "Wahl 1: 1-9". Es könnten einige nachgestellte Leerzeichen oder eine neue Zeile charecter. Versuchen Sie es drucken, um zu überprüfen, dass. Sie können entfernen Sie diese mithilfe strip.
In jedem Fall, wie EdChum erwähnt, ist es nicht empfohlen, um bedingte Einfuhren. Noch schlimmer, importieren Sie die gleiche Modul mit zwei Zeilen nach unten. Ich bin nicht sicher, wenn Sie wollen das tun, aber ich würde vorschlagen, um die rn1-definition in die Prüfung statt.