Найти - Пользователи
Полная версия: не могу понять в чем ошибся(( помогите пожалуйста
Начало » Python для новичков » не могу понять в чем ошибся(( помогите пожалуйста
1
Ne_znay_ka
 # Крестики-нолики 
# Компьютер играет в крестики-нолики против пользователя 
# глобальные константы 
X = "Х" 
O = "0" 
EMPTY = " "
TIE = "Ничья" 
NUM_SQUARES = 9
# Инструкция 
#Демонстрирует. как создавать собственные функции 
def display_instruct():
    """Выводит на экран инструкцию для игрока."""
    print( 
    """
    Добро пожаловать на ринг грандиознейших интеллектуальных состязаний всех времен. 
    Твой мозг и мой процессор сойдутся в схватке за доской игры "Крестики-нолики". 
    Чтобы сделать ход. введи число от О до 8. Числа однозначно соответствуют полям 
    доски - так, как показано ниже: 
    0 | 1 | 2
    ----------
    з | 4 | 5
    ----------
    6 | 7 | 8
    Приготовься к бою. жалкий белковый человечишка. Вот-вот начнется решающее сражение. \n """
    )
def ask_yes_no(question):
    """Задает вопрос с ответом 'да' или 'нет' . """ 
    response = None 
    while response not in ("y", "n"): 
        response = input(question). lower()
    return response
def ask_number(question, low, high):
    """Просит ввести число из диапазона.""" 
    response = None 
    while response not in range(low, high): 
        response = int(input(question)) 
    return response
def pieces(): 
    """Определяет принадлежность первого хода.""" 
    go_first = ask_yes_no("Xoчeшь оставить за собой первый ход? (y/n): ") 
    if go_first == "y": 
        print("\nHy что ж, даю тебе фору: играй крестиками.") 
        human = X
        computer = 0
    else: 
        print("\nTвoя удаль тебя погубит... Буду начинать я.") 
        computer = X
        human = 0
    return computer, human 
def new_board(): 
    """Создает новую игровую доску."""
    board = [] 
    for square in range(NUM_SQUARES): 
        board.append(EMPTY) 
    return board
def display_board(board): 
    """Отображает иге>овую доску на экране.""" 
    print("\n\t", board[0], "|", board[1], "|", board[2]) 
    print("\t", "---------") 
    print("\t", board[3], "|", board[4], "|", board[5]) 
    print("\t", "---------") 
    print("\t", board[6], "|", board[7], "|", board[8]< "\n")
def legal_moves(board): 
    """создает список доступных ходов.""" 
    moves = [] 
    for square in range(NUM_SQUARES): 
        if board[square] == EMPTY: 
            moves.append(square) 
    return moves
def winner(board): 
    """Определяет победителя в игре.""" 
    WAYS_TO_WIN = ( (0, 1, 2), 
                    (3, 4, 5), 
                    (6, 7, 8), 
                    (0, 3, 6), 
                    (1, 4, 7), 
                    (2, 5, 8), 
                    (0, 4, 8), 
                    (2, 4, 6))
    for row in WAYS_TO_WIN: 
        if board[row[0]] == board[row[1]] == board[row[2]] != EMPTY:
            winner = board[row[0]]
            return winner
        if EMPTY not in board: 
            return TIE
    return None 
def human_move(board, human):
    """Получает ход человека. """ 
    legal = legal_moves(board) 
    move = None 
    while move not in legal: 
        move = ask_number("Tвoй ход. Выбери одно из полей (0 - 8):", 0, NUM_SQUARES) 
        if move not in legal:
            print("\nCмeшнoй человек! Это поле уже занято. Выбери дpyroe.\n") 
    print( "Ладно ... ") 
    return move
def computer_move(board, computer, human):
    """Делает ход за компьютерного противника.""" 
#создадим рабочую копию доски. потому что функuия будет менять некоторые значения в списке 
    board = board[:]
# поля от лучшего к худшему 
    BEST_MOVES = (4, 0, 2, 6, 8, 1, 3, 5, 7)
    print("Я выберу поле номер", end=" ")
    for move in legal_moves(board): 
        board[move] = computer 
# если следующим ходом может победить компьютер. выберем этот ход 
        if winner (board) == computer: 
            print(move) 
            return move 
# вь1полнив проверку. отменим внесенные изменения 
        board[move] = EMPTY
    for move in legal_moves(board): 
        board[move] = human 
# если следующим ходом может победить человек. блокируем этот ход 
        if winner(board) == human: 
            print (move) 
            return move 
# вь1полнив проверку. отменим внесенные изменения 
            board[move] = EMPTY
# поскольку следующим ходом ни одна сторона не может победить. 
# выберем лучшее из доступных полей 
    for move in BEST_MOVES: 
        if move in legal_moves(board): 
            print(move) 
            return move
def next_turn(turn): 
    """Осуществляет переход хода.""" 
    if turn == X: 
        return 0
    else: 
        return X
    #Эта функция используется для того, чтобы чередовать ходы по мере того. как игроки будут их совершать.
def congrat_winner(the_winner, computer, human):
    """Поздравляе; победителя игры."""
    if the_winner != TIE:
        print("Tpи", the_winner, "в ряд!\n") 
    else:
        print("Hичья!\n") 
    if the_winner == computer:
        print("Kaк я и предсказывал. победа в очередной раз осталась за м~ой. \n"\
              "Вот еще один довод в пользу того. что компьютеры превосходят людей решительно во всем.") 
    elif the_winner == human: 
        print("O нет, этого не может быть! Неужели ты как-то сумел перехитрить меня, белковый? \n" \
              "Клянусь: я, компьютер, не допущу этого больше никогда!")
    elif the_winner == TIE:
        print("Teбe несказанно повезло. дружок: ты сумел свести игру вничью. \n" \
             "Радуйся же сегодняшнему успеху! Завтра тебе уже не суждено его повторить. ") 
def main(): 
    display_instruct() 
    human = pieces() 
    turn = X
    board = new_board() 
    display_board(board) 
    while not winner(board): 
        if turn == human: 
            move = human_move(board, human) 
            board[move] = human 
        else: 
            move = computer_move(board, computer, human) 
            board[move] = computer 
        display_board(board) 
        turn = next_turn(turn) 
    the_winner = winner(board) 
    congrat_winner(the_winner, computer, human) 
# запуск программы 
main() 
input("\n\пНажмите Enter. чтобы выйти.")
AD0DE412
а ошибку что лень запостить
зы
 tbl = {0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9}
print(f"{tbl[0]} | {tbl[1]} | {tbl[2]}\n{'-'*10}\n{tbl[3]} | {tbl[4]} | {tbl[5]}\n{'-'*10}\n{tbl[6]} | {tbl[7]} | {tbl[8]}\n")

 1 | 2 | 3
----------
4 | 5 | 6
----------
7 | 8 | 9
Ne_znay_ka
AD0DE412
а ошибку что лень запостить зы
спасибо. Я по книжке делал там не было этого.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB