2016-03-28 21 views
2

Ich mache ein Schulprojekt und ich brauche etwas Hilfe bei der Kommunikation zwischen Funktionen. Dies ist, was ich habeKommunikation zwischen Funktionen in Python

def difficuilty(): 
level = 0 
while level >=4 or level == 0: 
    level = int(input("Please enter the difficulty (1/2/3)")) 
    if level == 1: 
     yesNo = input("you have chosen difficulty 1, is this correct? ") 
     if yesNo.upper() == 'Y': 
      level = 1 
     elif yesNo.upper() == 'N': 
      level = 4 
     else: 
      print ("You have entered the wrong thing") 
    elif level == 2: 
     yesNo = input("you have chosen difficulity 2, is this correct? ") 
     if yesNo.upper() == 'Y': 
      level = 2 
     elif yesNo.upper() == 'N': 
      level = 4 
     else: 
      print ("You have entered the wrong thing") 
    elif level == 3: 
     yesNo = input("you have chosen difficulity 3, is this correct? ") 
     if yesNo.upper() == 'Y': 
      level = 3 
     elif yesNo.upper() == 'N': 
      level = 4 
     else: 
      print ("You have entered the wrong thing") 

return level 


def question(level): 
    if level == 1: 
     print ("hi") 

def main(): 

    getName() 
    difficulty() 
    question(level) 

bisher habe ich versucht, die Variable ‚Wert‘ erhalten aus der Schwierigkeit Funktion in die Frage-Funktion zu gehen, so kann ich es nutzen, wenn ich das Programm laufen, es gibt mir ein Fehler, der besagt, dass 'NameError: Name' nicht definiert ist '. Kann mir bitte jemand helfen? Dank

Antwort

2

Die Variable level ist nur definiert im Rahmen Ihrer beiden Funktionen, aber nicht in den Anwendungsbereich der main() zurückgeführt wird. Sie müssen eine Variable (level) im Rahmen von main() definieren, um darauf zugreifen zu können. Versuchen:

def main(): 
    getName() 
    level = difficulty() 
    question(level) 

Auf diese Weise wird die Variable, die von difficulty() (benannt level innerhalb difficulty()) zurückgegeben zu main() zugänglich ist.

Ist dies auch Ihr tatsächlicher Code? Ich bemerke einige Fehler, wie difficulty() wird auf zwei verschiedene Arten buchstabiert, und ein Fehlen der Einrückung innerhalb difficuilty(), die unerwartete Ergebnisse haben wird, wenn Sie dies ausführen. Bitte posten Sie Ihren Wortcode, wenn Sie ihn haben, damit Sie leichter erkennen können, um welches Problem es sich handelt.

+0

auch, getName ist nicht definiert – aless80

+0

Ich habe die Rechtschreibfehler behoben. Und ich habe die getName-Funktion abgeschnitten, als ich diese –

+0

@JamesBramley gepostet habe Ok, würde es Ihnen etwas ausmachen, Ihre Frage so zu bearbeiten, dass sie Ihren vollständigen Code enthält? –

0

Sie müssen den Wert der Ebene abzurufen, die von Ihrer schwierigen Funktion

def main(): 
    getName() 
    level = difficulty() 
    question(level) 
+0

Ich habe nicht downvote, aber in Python verwenden Sie nicht 'def' für die Zuweisung von Variablen. –

0

Ich glaube, die global Methode tut genau das, es macht das lokale Arg innerhalb einer Funktion verwendet, um eine globale auf alle Fälle abrufbar.

def difficuilty(): 
    level = 0 
    while level >=4 or level == 0: 
     level = int(input("Please enter the difficulty (1/2/3)")) 
     global level 

Auf diese Weise (Ebene) wird aufrufbar sein. Eine letzte Sache, in Anbetracht Ihrer Bewerbung würde ich mit Milo's Antwort gehen, weil die Verwendung global Methode kann ihre Nachteile haben.