В настоящее время я делаю упражнение на python с learnpython.org: у меня проблемы с дополнительным упражнением, выделенным жирным шрифтом:
Создайте случайное число от 1 до 9 (включая 1 и 9). Попросите пользователя угадать число, а затем скажите ему, угадал ли он слишком низко, слишком высоко или точно. (Подсказка: не забудьте использовать уроки пользовательского ввода из самого первого упражнения)
Дополнительно:
Продолжайте игру, пока пользователь не наберет «выход».
Отслеживайте, сколько предположений сделал пользователь, и когда игра закончится, распечатайте это.
Вот мой код:
import random
def gameTracker():
global playedGames
playedGames = 1
playedGames = playedGames+1
def generateNumber():
global generatednumber
generatednumber = random.randint(1, 9)
def generateuserGuess():
global userguess
userguess = int(input('Pick a number between 1-9: '))
def generationProcess():
global userguess
if int(userguess) == generatednumber:
print('You have guessed the number. Congratulations.')
gameTracker()
global playAgain
playAgain = input('Want to play again? y/n: ')
if playAgain == 'y':
generateNumber()
userguess = input('Pick a new number between 1-9: ')
generationProcess()
if playAgain == 'n':
print('The game has ended. You have played: ')
print(int(playedGames))
print('games')
if int(userguess) > generatednumber:
print('You have guessed too high.')
global conConfirm
conConfirm = str(input('Guess again?: c/quit: '))
conGame()
if int(userguess) < generatednumber:
print('You have guessed too low.')
conConfirm = str(input('Guess again?: c/quit: '))
conGame()
def conGame():
if conConfirm == 'c':
global userguess
userguess = int(input('Your new guess please: '))
generationProcess()
if conConfirm == 'quit':
print('The game has ended. You have played: ')
print(int(playedGames))
print('games')
generateNumber()
generateuserGuess()
generationProcess()
Когда пользователь нажимает «n» или «выйти» после игры, он не распечатывает правильное количество игр, что означает, что gameTracker()
написано плохо / неправильно, но он также по какой-то причине печатает количество раз, когда игра была сыграна * что происходит после playAgain == 'n'.
Как я буду делать эту работу?
sys
модуль дляsys.exit
, и он останавливает рекурсию. Код не такой красивый, но работает. Если вы обнаружили ошибку или что-то в ней во время игры, дайте мне знать. - person Alekong   schedule 19.02.2017