blunder-ful Ответов: 2

Я написал код своего вопроса, но все еще есть некоторые ошибки, и я не могу понять, как их решить. Пожалуйста, помогите ! ! 1


игра в Угадайку, в которой игрок должен угадать букву, случайно сгенерированную компьютером. Игрок имеет неограниченное количество догадок, и каждый раз, когда игрок делает предположение, компьютер будет предоставлять обратную связь о том, было ли предположение слишком высоким, слишком низким или правильным.

Любые предложения приветствуются

Что я уже пробовал:

# Guessing game 
# player guesses a random letter generated
# unlimited guesses

import random, string

def main():
    continue_game = True
    while continue_game== True:
        play_one_round()
        continue_game = play_again()
        
def play_one_round():
    # play one round of the game
    display_instructions()
    print('I am thinking of a letter between a and z.')
    
    # generate a random letter from a to z
    letter = random.choice(string.ascii_letters)
    letter = letter.lower()
    
    guess_num = 0   
    guess_list = []
    overall_guess_list=[]
    while True:
        guess = input('Take a guess: ')
        guess_list.append(guess)
        guess_num = guess_num+1
        if guess>= 'a' and guess<= 'z':
            if guess < letter:
                print('Your guess is too low.')
                continue
            elif guess > letter:
                print('Your guess is too high.')
                continue 
            elif guess== letter:
                print('Good Job, you guessed the correct letter!')
                answer = guess
                break
        else:
            print('Invalid Input') 
            continue
        
    print('---MY STATS---')
    print('Number of Guesses: ', guess_num)
    overall_guess_list.append(guess_num)       # total guesses of all games
    ranking_label(guess_num)
    worst_letter = worst_guess(guess,answer, guess_list)
    print('Worst Letter Guess: ', worst_letter)
    play_again()    
    
    
def display_instructions():
    # display  instructions
    instructions_file = open('instructions.txt', 'r')
    instructions = instructions_file.read()
    instructions_file.close()
    print(instructions)
    
def ranking_label(guess_num):
    if guess_num <5:
        print('Level: Expert')
    elif guess_num>=5 and guess_num<=10:
        print('Level: Intermediate')
    else:
        print('Level: Beginner')
        
def worst_guess(guess, answer, guess_list):
    diff_list = []
    for guess in guess_list:
        diff = abs(ord(guess)-ord(answer))
        diff_list.append(diff)
    worst_num = int(max(diff_list))
    worst_letter = abs(ord(answer)- worst_num)
    
    return chr(worst_letter)

def play_again():
    # prompt to play again
    # depends on player's choice
    again = input('Would you like to play again? Y/N ')
    if again.lower() == 'y':
        continue_game = True
    else:
        continue_game =  False
        print(summary_stat(overall_guess_list))
    return continue_game
    
def summary_stat(overall_guess_list):
    print('---SUMMARY STATS---')
    lowest = min(overall_guess_list)
    highest = max(overall_guess_list)
    print('Lowest number of Guesses: ', lowest)
    print('Highest number of guesses: ', highest)
    avg_guess = sum(overall_guess_list)/ len(overall_guess_list)
    print('Average Number of Guesses: ', avg_guess)
    if avg_guess <5:
        print('Overall Level: Expert')
    elif avg_guess>=5 and avg_guess<=10:
        print('Overall Level: Intermediate')
    else:
        print('Overall Level: Beginner')    

        
main()

Richard MacCutchan

Я предлагаю вам задать вопрос.

2 Ответов

Рейтинг:
2

Patrice T

Цитата:
Я написал код своего вопроса, но все еще есть некоторые ошибки

Вы забыли объяснить/описать, что это за ошибки. Когда вы просите о помощи, это хорошая идея, чтобы сказать, в чем ваша проблема.
Цитата:
Я не могу понять, как их решить.

Поиск всех ошибок только путем чтения кода зарезервирован для экспертов из-за их опыта и практики.
Для начинающих есть такой инструмент, как отладчик, и вторичный эффект, злоупотребляя им, улучшают вашу кривую обучения.

Ваш код ведет себя не так, как вы ожидаете, или вы не понимаете, почему !

Существует почти универсальное решение: запускайте свой код на отладчике шаг за шагом, проверяйте переменные.
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача-сравнить с тем, что он должен делать.
В отладчике нет никакой магии, он не знает, что должен делать ваш код, он не находит ошибок, он просто помогает вам, показывая, что происходит. Когда код не делает того, что ожидается, вы близки к ошибке.
Чтобы увидеть, что делает ваш код: просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик - Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010 - YouTube[^]

27.3. ПДБ — отладчика Python — питон 3.6.1 документации[^]
Отладка в Python | Python покоряет Вселенную[^]
pdb – интерактивный отладчик - Python модуль недели[^]

Отладчик здесь только для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.


CPallini

5.

Patrice T

Спасибо

Рейтинг:
0

Member 13467964

Перед отладкой кода научитесь выполнять основные действия
Глаз через отладку. Где вы ищете
основные ошибки с вашими глазами.

Такие ошибки, как отступы, точки с запятой
орфография и пред-и постусловия вашего письма
Функции или классы.

Это становится полезным инструментом в становлении эксперта.