2016-03-08 3 views
2

Я начинающий в python, используя 2.7.11, и я сделал гадательную игру. Вот мой код до сих порPython Guessing game

def game(): 
    import random 
    random_number = random.randint(1,100) 
    tries = 0 
    low = 0 
    high = 100 
    while tries < 8: 
     if(tries == 0): 
      guess = input("Guess a random number between {} and {}.".format(low, high))  
     tries += 1 
     try: 
      guess_num = int(guess) 
     except: 
      print("That's not a whole number!") 
      break  

     if guess_num < low or guess_num > high: 
      print("That number is not between {} and {}.".format(low, high)) 
      break  

     elif guess_num == random_number: 
      print("Congratulations! You are correct!") 
      print("It took you {} tries.".format(tries)) 
      playAagain = raw_input ("Excellent! You guessed the number! Would you like to play again (y or n)? ") 
      if playAagain == "y" or "Y": 
      game() 

     elif guess_num > random_number: 
      print("Sorry that number is too high.") 
      high = guess_num 
      guess = input("Guess a number between {} and {} .".format(low, high))  

     elif guess_num < random_number: 
      print("Sorry that number is too low.") 
      low = guess_num 
      guess = input("Guess a number between {} and {} .".format(low, high))  

     else: 
      print("Sorry, but my number was {}".format(random_number)) 
      print("You are out of tries. Better luck next time.") 
game() 
  1. Как бы я включать в себя систему, которая делает это так каждый раз, когда пользователь угадает правильный номер он включает в себя обратную связь дает наименьшее количество догадок потребовалось, чтобы правильно угадать число. Как высокий балл на сколько догадок он взял их и изменить его, только если он был избит
+2

вы можете изменить 'если playAagain ==«у»или«Y»:' в ' если playAagain.lower() == "y": 'или' if playAagain == "y" или playAgain == "Y": ' –

+1

Несколько предложений и вопросов, не связанных с вашим вопросом. 1). Вы должны использовать последовательный отступ (обычное соглашение - 4 пробела на уровень). 2). Не импортируйте модули внутри своих функций, сделайте это в верхней части скрипта. 3). Почему вы выходите из цикла при плохом вводе? 4). Не перезапускайте игру, вызывая 'game()' внутри себя, используйте цикл. 5). Реструктурируя код, вы можете избавиться от 2 из этих 'guess = input (...' lines. –

ответ

0

вы можете создать статическую переменную как это: game.highscore = 10

  • и обновлять его каждый раз, когда пользователь выигрывает игру (проверить, если попытки меньше, чем топ-лист)
0

Вы можете добавить параметр best_score к вашей game функции:

def game(best_score=None): 
    ... 
    elif guess_num == random_number: 
     print("Congratulations! You are correct!") 
     print("It took you {} tries.".format(tries)) 

     # update best score 
     if best_score is None: 
      best_score = tries 
     else: 
      best_score = min(tries, best_score) 

     print("Best score so far: {} tries".format(best_score)) 

     play_again = raw_input("Excellent! You guessed the number! Would you like to play again (y or n)? ") 
     if play_again.lower() == "y": 
      game(best_score) # launch new game with new best score 
    ... 
0

В начале кода (перед определением функции), добавить глобальную переменную best_score (или что вы хотите назвать его), и инициализировать его как None:

best_score = None 

Во время проверки на является ли число является правильное предположение, вы можете проверить количество попыток против best_score и обновлять соответственно:

elif guess_num == random_number: 
    global best_score 

    # check if best_score needs to be updated 
    if best_score == None or tries < best_score: 
     best_score = tries 
    print("Congratulations! You are correct!") 
    print("It took you {} tries.".format(tries)) 

    # print out a message about the best score 
    print("Your best score is {} tries.".format(best_score))