Форум сайта python.su
0
Мне нужно оптимизировать код но я в этом не разбираюсь помогите пожалуйста
import random mss1 = ["_", "_", "_"] mss2 = ["_", "_", "_"] mss3 = ["_", "_", "_"] def printP(): print(" 1 2 3") print("A", mss1) print(" ") print("B", mss2) print(" ") print("C", mss3) def win(): if mss1[0] == "X" and mss1[1] == "X" and mss1[2] == "X": print("Win User"); return True elif mss2[0] == "X" and mss2[1] == "X" and mss2[2] == "X": print("Win User"); return True elif mss3[0] == "X" and mss3[1] == "X" and mss3[2] == "X": print("Win User"); return True elif mss1[0] == "X" and mss2[0] == "X" and mss3[0] == "X": print("Win User"); return True elif mss1[1] == "X" and mss2[1] == "X" and mss3[1] == "X": print("Win User"); return True elif mss1[2] == "X" and mss2[2] == "X" and mss3[2] == "X": print("Win User"); return True elif mss1[0] == "X" and mss2[1] == "X" and mss3[2] == "X": print("Win User"); return True elif mss3[0] == "X" and mss2[1] == "X" and mss1[2] == "X": print("Win User"); return True elif mss1[0] == "0" and mss1[1] == "0" and mss1[2] == "0": print("Win Comp"); return True elif mss2[0] == "0" and mss2[1] == "0" and mss2[2] == "0": print("Win Comp"); return True elif mss3[0] == "0" and mss3[1] == "0" and mss3[2] == "0": print("Win Comp"); return True elif mss1[0] == "0" and mss2[0] == "0" and mss3[0] == "0": print("Win Comp"); return True elif mss1[1] == "0" and mss2[1] == "0" and mss3[1] == "0": print("Win Comp"); return True elif mss1[2] == "0" and mss2[2] == "0" and mss3[2] == "0": print("Win Comp"); return True elif mss1[0] == "0" and mss2[1] == "0" and mss3[2] == "0": print("Win Comp"); return True elif mss3[0] == "0" and mss2[1] == "0" and mss1[2] == "0": print("Win Comp"); return True def Bot(): r = random.randint(1, 3) if r == 1: r = random.randint(0, 2) if mss1[r] == "_": mss1[r] = "0" else: Bot() elif r == 2: r = random.randint(0, 2) if mss2[r] == "_": mss2[r] = "0" else: Bot() elif r == 3: r = random.randint(0, 2) if mss3[r] == "_": mss3[r] = "0" else: Bot() while True: printP() if win(): break else: user = input("-> ") if user == "A1" or user == "a1": if mss1[0] == "_": mss1[0] = "X"; Bot() else: print("No ") elif user == "A2" or user == "a2": if mss1[1] == "_": mss1[1] = "X"; Bot() else: print("No ") elif user == "A3" or user == "a3": if mss1[2] == "_": mss1[2] = "X"; Bot() else: print("No ") elif user == "B1" or user == "b1": if mss2[0] == "_": mss2[0] = "X"; Bot() else: print("No ") elif user == "B2" or user == "b2": if mss2[1] == "_": mss2[1] = "X"; Bot() else: print("No ") elif user == "B3" or user == "b3": if mss2[2] == "_": mss2[2] = "X"; Bot() else: print("No ") elif user == "C1" or user == "c1": if mss3[0] == "_": mss3[0] = "X"; Bot() else: print("No ") elif user == "C2" or user == "c2": if mss3[1] == "_": mss3[1] = "X"; Bot() else: print("No ") elif user == "C3" or user == "c3": if mss3[2] == "_": mss3[2] = "X"; Bot() else: print("No ")
Офлайн
44
[2, 0, 2] [0, 1, 0] [0, 0, 1]
и вставьте ссылку на его url Отредактировано AD0DE412 (Июнь 4, 2022 17:38:55)
Офлайн
5
AD0DE412Да крестики нолики это у него, вот из этой темы: https://python.su/forum/topic/41630/?page=1#post-222263
?
K1ssuke1Тут переделывать всё нужно с нуля а не оптимизировать.
Мне нужно оптимизировать
Офлайн
44
да вижу просто видно человек
старается почему бы не помочь
ps ну и если … https://python.su/forum/post/222252/ тоже не фонтан
и вставьте ссылку на его url Отредактировано AD0DE412 (Июнь 4, 2022 18:27:52)
Офлайн
5
Немного подправил гуляющую по интернету реализацию крестиков-ноликов, и прикрутил к ней бота, тыкающего нолик рандомно. Ходит он первым, чтобы достичь хоть какого-то паритета с игроком.
import random board = list(range(1, 10)) WIN_MAP = ((0, 1, 2), (3, 4, 5), (6, 7, 8), (0, 3, 6), (1, 4, 7), (2, 5, 8), (0, 4, 8), (2, 4, 6)) def draw_board(board): print("-" * 13) for i in range(3): print("|", board[0 + i * 3], "|", board[1 + i * 3], "|", board[2 + i * 3], "|") print("-" * 13) def player_turn(): draw_board(board) while True: try: player_answer = int(input("Куда поставим X?\n>>> ")) except: print("Некорректный ввод. Введите число.") continue if player_answer >= 1 and player_answer <= 9: if str(board[player_answer - 1]) not in "X0": board[player_answer - 1] = 'X' break else: print("Эта клетка уже занята!") continue else: print("Некорректный ввод. Введите число от 1 до 9.") continue return def check_win(board): for each in WIN_MAP: if board[each[0]] == board[each[1]] == board[each[2]]: return board[each[0]] return False def bot_turn(): while True: bot_choice = random.choice(board) if str(bot_choice) not in "X0": board[bot_choice - 1] = '0' print('Бот поставил 0 на', bot_choice) return True else: continue def main(board): counter = 0 while True: if counter % 2 == 0: bot_turn() else: player_turn() counter += 1 if counter > 4: tmp = check_win(board) if tmp == '0': print("Победил бот") break elif tmp == 'X': print("Вы победили!") break if counter == 9: print("Ничья!") break draw_board(board) input("Нажмите Enter для выхода.") return 0 if __name__ == '__main__': main(board)
Отредактировано Palrom (Июнь 5, 2022 23:47:25)
Офлайн