2014-01-06 3 views
-1

Я пытаюсь сделать простую игру угадывания, но программа выходит, когда пользователь отвечает «да», что они умеют играть. Я не понимаю, почему «перерыв» делает выход программы, а не продолжает остальную часть кода. Экстремальный новичок, если вы не можете сказать: P Спасибо за помощь!Почему «перерыв» в этом коде Python заканчивается программой?

import random 
import time 
def calculat(times): 
    p = "." 
    for nums in range(times): 
     print p 
     time.sleep(.2) 
     print p * 2 
     time.sleep(.2) 
     print p * 3 
     time.sleep(.2) 
     print p * 2 
     time.sleep(.2) 
    print p 
    time.sleep(.6) 


print "Welcome to Guess!" 
print "Press [Enter] to continue!" 
raw_input() 



while True: 
    know = raw_input("Do you know how to play? Enter [yes] or [no]\n") 
    know = know.upper() 
    if know == "YES": 
     break 
    elif know == "NO": 
     print " " 
     print "-INSTRUCTIONS-" 
     print "Here's how the game works. A number 1 to 100" 
     print "is generated randomly. Your goal is to guess" 
     print "as many numbers as possible before you run" 
     print "out of guesses. You have 10 guesses.Good luck!" 
     print "Have fun!" 
    else: 
     print "Please enter [yes] or [no]!" 

while True: 
    score = 0 
    number = randint(1,100) 
    newnum = 1 

    for tries in range(0,9): 
     if newnum == 1: 
      print "Okay, I have a number 1 to 100! What is it?" 
     else: 
      print "Guess again! What's the number?" 

     while True: 
      try: 
       guess = input() 
       if guess <= 100 and guess >= 1: 
        break 
       else: 
        print "You must guess an integer, 1 - 100!" 
      except: 
       print "You must guess an integer, 1 - 100!" 

     if guess == number: 
      print "Heyo! That's correct!" 
      score = score + 1 
      number = randint (1,100) 
      newnum = 1 
      if tries != 9: 
       print "Press [Enter]! Guess another number!" 
      raw_input() 

     elif guess < number: 
      if tries != 9: 
       print "Darn, that guess was less than the number! Try again!" 
       print "Press [Enter] to continue!" 
      raw_input() 

     elif guess > number: 
      if tries != 9: 
       print "Whoa, that guess is too big! Try again!" 
       print "Press [Enter] to continue!" 
      raw_input() 

    print "That's it! Let me calculate your final score! [Press Enter]" 
    raw_input() 
    calculate(4) 
    print "Final Score: " + score 
    print "Good job!" 
    raw_input() 
    print "Would you like to play again? [yes] or [no]?" 
    play = raw_input() 
    play = play.upper() 
    if play == "NO": 
     print "Okay then, press enter to exit!" 
     raw_input() 
     break 
    elif play == "YES": 
     print "Yey! Let me think of a new number!" 
     calculate(2) 
    else: 
     print "You couldn't even say yes or no. Get out." 
     raw_input() 
     break 

О да, остальная часть кода также может быть сломана. Я не прошел мимо инструкции.

+5

Когда я запускаю код и вводим «Да», он выходит с сообщением об ошибке. Пробовали ли вы прочитать сообщение об ошибке? – jwodder

ответ

4

Он заканчивает программу, так как она сразу же обнаруживает ошибку после завершения инструкций. Вы импортировали random, но затем попытались использовать randint, неквалифицированный. Вы должны квалифицировать его как random.randint или использовать from random import randint.

0

Я предполагаю, что вы имеете в виду оператор break для выхода из первого бесконечного цикла. Когда я запускаю ваш код, оператор break работает очень хорошо, и управление переходит ко второму бесконечному циклу while.

Однако ваша программа затем сбой при первом вызове randint(), потому что вы не импортируете его правильно. Поскольку функция randint() находится вне вашей программы (она находится в модуле random), вам необходимо квалифицировать вызовы на randint() как random.randint() - поэтому для первого вызова вы можете использовать number = random.randint(1, 100). Кроме того, вы можете импортировать randint, используя from random import randint, а не import randint. Таким образом, вы сможете напрямую позвонить по телефону randint().

Смежные вопросы