2017-05-26 4 views
-1

Je crée un programme où le héros sauve deux otages en 10 secondes. Les premières choses qu'il doit faire sont de décider qui sauver en premier, puis tapez le code de la bombe pour sauver l'otage, si l'utilisateur tape le nom de l'otage à tort, il peut le saisir à nouveau. Mais après que je tape mal une fois que les boucles s'arrêtent ou après avoir fini de sauver le premier otage, la boucle s'arrête.'in' arrête de travailler après raw_input

Voici le code:

holly = True 
molly = True 

for i in range(0,11): 
    print "Who will you save?" 
    print "Time paste:", i 

    decide = raw_input("> ") 

    if decide == "Holly" and holly: 
     print "You decided to save Holly." 
     print "Whats the code?" 
     code = random.randint(100,1000) 
     print code 
     decide = int(raw_input("> ")) 
     if decide != code: 
      exit('You are dead!') 
     print "You saved Holly!" 
     holly = False 
    elif decide == "Molly" and molly: 
     print "You decided to save Molly." 
     print "Whats the code?" 
     code = random.randint(100,1000) 
     print code 
     decide = int(raw_input("> ")) 
     if decide != code: 
      exit('You are dead!') 
     print "You saved Molly!" 
     molly = False 
    elif not holly and not molly: 
     print "You saved both of them!" 
     break 
    else: 
     print "Try again!" 

Je fais tout dans une classe, voici le code complet:

class Mountains(object): 
    def enter(self): 
     print "After you defeated Josh. You headed towards the mountains." 
     print "There you're final target sits." 
     print "Jim the \"Knigh\"" 
     print "He has 2 hostages. Holly and Molly, you have 10 seconds to save them." 
     print "They are bought straped to a bomb, each one in different location" 
     print "Each bomb has a 3 digit code." 

     holly = True 
     molly = True 

     for i in range(0,11): 
      print "Who will you save?" 
      print "Time remaining:", i 

      decide = raw_input("> ") 

      if decide == "Holly" and holly: 
       print "You decided to save Holly." 
       print "Whats the code?" 
       code = random.randint(100,1000) 
       print code 
       decide = int(raw_input("> ")) 
       if decide != code: 
        exit('You are dead!') 
       print "You saved Holly!" 
       holly = False 
      elif decide == "Molly" and molly: 
       print "You decided to save Molly." 
       print "Whats the code?" 
       code = random.randint(100,1000) 
       print code 
       decide = int(raw_input("> ")) 
       if decide != code: 
        exit('You are dead!') 
       print "You saved Molly!" 
       molly = False 
      elif not holly and not molly: 
       print "You saved both of them!" 
       break 
      else: 
       print "Try again!" 

      if holly and molly: 
       exit("You are dead!") 

      print "After you saved both, Jim comes in angry!" 
      print "He takes his shotgun! And startes firing!" 
      print "You take cover, and start to think where to shoot!" 
      print "You only have 4 bullets! Make it count!" 

      hero = 100 
      villain = 100 
      bullets = 4 
      direction = ["up", "down", "left", "right"] 

      while True: 
       print "In which direction do you shoot?" 
       print "Hero health:",hero 
       print "Villain health:",villain 
       print "Bullets left:", bullets 

       if hero < 0: 
        exit("You are dead.") 
       elif villain < 0: 
        exit("You win") 
       elif bullets == 0: 
        exit("You are dead.") 

       bullets -= 1 
       shoot = random.choice(direction) 
       print shoot 

       choice = raw_input("> ") 

       if choice == shoot: 
        print "You shoot %s, hitting Jim but he also hits you." % shoot 
        hero -= random.randint(20,30) 
        villain -= random.randint(30,50) 
       elif choice != shoot: 
        print "You shoot %s, but you missed. Jim didn't miss." % shoot 
        hero -= random.randint(10,20) 
       else: 
        print "Try again." 
     else: 
      print "Try again" 
+2

Je ne peux pas reproduire le problème. Le code fait exactement ce qu'il semble faire. – JacobIRR

+0

Le code fonctionne correctement séparément. Mais dans une classe ce n'est pas le cas. –

+0

Comment utilisez-vous en utilisant le code dans la classe? S'il vous plaît [modifier] votre réponse et montrer cette partie. – martineau

Répondre

0

je résolu le problème en utilisant continuer. Ce sont les parties que j'ai inséré continuer dans:

if decide == "Holly" and holly: 
    print "You decided to save Holly." 
    print "Whats the code?" 
    code = random.randint(100,1000) 
    print code 
    decide = int(raw_input("> ")) 
    if decide != code: 
     exit('You are dead!') 
    print "You saved Holly!" 
    holly = False 
    continue 
elif decide == "Molly" and molly: 
    print "You decided to save Molly." 
    print "Whats the code?" 
    code = random.randint(100,1000) 
    print code 
    decide = int(raw_input("> ")) 
    if decide != code: 
     exit('You are dead!') 
    print "You saved Molly!" 
    molly = False 
    continue 
else: 
    print "Try again!" 
    continue