2016-11-20 6 views
0

Also mache ich ein Eingabemenü für mein Programm, das bestimmte Funktionen ausführt, um Daten anzuzeigen, je nachdem was der Benutzer eingibt. Der Benutzer muss Auswahlen in der Reihenfolge eingeben; Wenn der Benutzer 2 vor 1 oder 3 vor 2 wählt, sollte das Programm einen Fehler melden. Ich hatte es richtig funktioniert, bis ich in Fehlerzeichenfolgen hinzugefügt habe, die darstellen, was der Benutzer falsch gemacht hat. Etwas, das ich vorher noch nicht gelöst hatte, war, dass wenn die falsche Auswahl eingegeben wurde, die Daten, die vor der Auswahl erzeugt wurden, noch im Spiel sind (dh die in Auswahl 1 erzeugten Daten müssen immer noch zur Auswahl verfügbar sein) 3 wird stattdessen eingegeben, dann wird Auswahl 2 verwendet). Mein Programm emuliert das jedoch nicht. Ich habe mich gefragt, ob ich ein paar Tipps bekommen könnte, wie ich meinen Code ändern könnte.Eingabe Menü Python 3x

Hier ist mein Code:

def menu(): 

    '''Displays menu for user and runs program according to user commands.''' 
    prompt = """Select one of the following options: 
    1. Generate a new random dataset. 
    2. Calculate least squares for the dataset. 
    3. Calculate the Pearson Correlation Coefficient for the data set and 
    the estimate. 
    4. Quit.\nEnter your selection: """ 
    userInp = "" 
    run = True 
    while(run): 

     userInp = input(prompt)  
     cond1 = False 
     cond2 = False 

     if userInp == '1': 
      #function/program stuff 
      cond1 = True 
      print("Data Generated.\n") 

     elif userInp == '2' and cond1: 
      #function/program stuff 
      cond2 = True 

     elif userInp == '3' and cond1 and cond2: 
      #function/program stuff 

     elif userInp == '4': 
      run = False 

     else: 
      error1 = "Error: no data generated yet"#         
      error2 = "Error: data generated but least squares not completed" 
      print(cond1 * error1 + cond2 * error2) 

Hinweis: Ich weiß, dass der Stoff in der else-Anweisung funktioniert nicht ganz. Es war ein Vorschlag von einem Freund für Scheiße und Auftritte. Frage mich, ob ich Hilfe auf, dass bekommen konnte, aber es ist nicht nicht notwendig, da ich es wahrscheinlich herausfinden konnte

Antwort

0

Also, im Grunde, was hier los ist cond1 und cond2 werden jedes Mal, wenn der while(run): Block läuft durch das Zurücksetzen.

ich Ihren Code in einer Sandbox setzen, dann ist dies das Update (ich den letzten else-Block als auch modifizierte):

'''Displays menu for user and runs program according to user commands.''' 
prompt = """ 
Select one of the following options: 
    1. Generate a new random dataset. 
    2. Calculate least squares for the dataset. 
    3. Calculate the Pearson Correlation Coefficient for the data set and the estimate. 
    4. Quit.\nEnter your selection: """ 
userInp = "" 
run = True 
cond1 = False 
cond2 = False 
while(run): 

userInp = input(prompt)  

if userInp == '1': 
    #function/program stuff 
    cond1 = True 
    print("Data Generated.\n") 

elif userInp == '2' and cond1: 
    #function/program stuff 
    cond2 = True 

elif userInp == '3' and cond1 and cond2: 
    #function/program stuff 

elif userInp == '4': 
    run = False 

else: 
    error= '' 
    if(not cond1): 
     error = "Error: no data generated yet"#         
    elif(not cond2): 
     error = "Error: data generated but least squares not completed" 
    print(error) 
+0

Oh Mann, ich nicht ganz verstand. Ich danke dir sehr!! – schCivil