2017-05-26 91 views
-1

我正在创建一个程序,英雄在10秒内拯救两名人质。他需要做的第一件事是决定先保存谁,然后输入炸弹的代码来营救人质,如果用户键入人质的名字,他可以再次输入。但是,当我输入错误后,循环停止或我完成保存第一个人质后循环停止。'for'在raw_input后停止工作

这是代码:

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!" 

我做的这一切在一类,这里是全码:

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

我无法重现该问题。代码的确如此。 – JacobIRR

+0

该代码单独运行良好。但是在课堂上并没有。 –

+0

如何使用类中的代码?请[编辑]你的答案,并显示该部分。 – martineau

回答

0

我通过不断解决问题。这些是我插入的部分继续:

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