2016-06-21 12 views
0

Dies ist wahrscheinlich der hässlichste Code, den Sie jemals sehen werden, trotzdem brauche ich Hilfe, weil ich nicht verstanden habe, wie Loops funktionieren. Die Idee des Skripts ist einfach, Sie geben einen Namen eines Superhelden und Sie erhalten seinen richtigen Namen. Dann, wenn Sie möchten, können Sie den Abschnitt "Biografie" auswählen, um ins Detail zu gehen.Rufen Sie einen Eingang außerhalb einer Schleife erneut auf

import sys 
import os 
super_heros = {'Hulk': 'Bruce Banner',    # Creo lista supereroei 
       'Capitan America': 'Steve Rogers', 
       'Spiderman': 'Peter Parker'} 

hero_biography = {'Bruce Banner': 'David Banner nasce in California. ' 
            'Si laurea con il massimo dei voti in medicina, radiologia, genetica' 
            'e biologia molecolare. ' 
            'A pochi anni dalla laurea, acquisisce una grande fama come medico in malattie' 
            'rare e genetiche, nonché come ricercatore in ambito radiologico, cellulare, e ' 
            'atomico. ' 
            'Per anni insegna scienze genetiche a Princeton e a Stanford, dove acquisisce' 
            'una fama sempre crescente nel campo delle ricerche sugli impulsi emotivi e ' 
            'sui raggi gamma. ' 
            'Le sue ricerche subiscono una grande ispirazione quando legge i primi articoli ' 
            'del dottorRonald Pratt, secondo il quale è possibile ottenere poteri guaritori ' 
            'da una manipolazione genetica. ' 
            'Al termine insegnamento come docente universitario, Banner lavora presso un ' 
            'laboratorio dove è affiancato da Elèna Marks, una vecchia compagna del college', 
        'Peter Parker' : 'Prova'} 

print('Script creato da Federico Di Lembo') 

while True: # Loop per condizione soddisfatta 

    choice = input('Nome Supereroe:') 
    if choice == 'Hulk': 
     print(super_heros['Hulk']) 
    elif choice == 'Capitan America': 
     print(super_heros['Capitan America']) 
    elif choice == 'Spiderman': 
     print(super_heros['Spiderman']) 

    elif choice == 'Esc': # Imposto uscita dal programma 
     sys.exit(0) 
    elif choice == 'Biografia': # Imposto uscita dal loop 
     break 
    else: 
     choice == '' 
     print('Nome inesistente') 

while True: # Imposto Nuovo Loop per la seconda scelta 
    x = 1 
    if x > 0: 
     newchoice = input('Biografia: digitare nome reale del supereroe ==> ') 
    if newchoice == 'Bruce Banner': 
     print(hero_biography['Bruce Banner']) 
     break 
    elif newchoice == 'Peter Parker': 
     print(hero_biography['Peter Parker']) 
    if newchoice == '': 
     newchoice 


while True: 
    x = 1 
    if x > 0: 
     secondnewchoice = input('Desideri continuare la ricerca nella sezione Biografia?') 

    if secondnewchoice == 'No': 
     break 
    if secondnewchoice == 'Si': 
     newchoice 



os.execl(sys.executable, sys.executable, *sys.argv) 

Im letzten Teil des Codes, ich verstehe nicht, wie Sie die newchoice-Eingabe "erinnern". In der letzten Schleife ist die Frage "Möchten Sie in der Biographie Abschnitt bleiben?", Wenn Ihre Antwort "Ja" "Si" ist, möchte ich auf Newchoiche Eingang beziehen, direkt darüber. Was mache ich falsch?

Es tut mir leid für mein Englisch.

Antwort

1

while Schleifen starten keinen neuen Bereich. newchoice ist immer noch sichtbar und wird nach der Schleife festgelegt, in der die Einstellung abgeschlossen ist.

while True: 
    foo = 3 
    break 
print foo # Outputs 3   

Ihr Problem, dass Sie nicht mit newchoice in der letzten Schleife tatsächlich tun etwas zu sein scheint; es ist eine String-Wert-Variable, kein Funktionsaufruf. Vielleicht möchten Sie eine verschachtelte Schleife:

while True: # Loop A 
    while True: # Loop B 
     newchoice = input('Biografia: digitare nome reale del supereroe ==> ') 
     if newchoice == '': 
      break # Exit loop B, moving on to loop C 
     elif newchoice not in hero_biography: 
      continue 
     else: 
      print(hero_biography[newchoice]) 

    while True: # Loop C 
     stay = input('Desideri ...') 
     if stay in ("No", "Si"): 
      break # Exit loop C 
    if stay == "No": 
     break # Exit loop A 
+0

Vielen Dank, es funktioniert! –

Verwandte Themen