diff --git a/task_12_15.py b/task_12_15.py new file mode 100644 index 00000000..38d236c4 --- /dev/null +++ b/task_12_15.py @@ -0,0 +1,135 @@ +#Задача 12. Вариант 15 +#Разработайте игру "Крестики-нолики". (см. М.Доусон Программируем на Python гл. 6). + +#Черников А.С. +#07.04.2017 +def display_instruct(): + print("""Сейчас сыграем в игру "Крестики-нолики". Чтобы сделать ход, введи число от 0 до 8, как показано ниже: + 0 | 1 | 2 + --------- + 3 | 4 | 5 + --------- + 6 | 7 | 8""") +X="X" +O="O" +EMPTY=" " +TIE="Ничья" +NUM_SQUARES=9 +def ask_yes_no(question): + response=None + while response not in ("yes","no"): + 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("Хочешь оставить за собой первый ход? (yes/no): ") + if go_first=="yes": + print("\nНу что ж, даю тебе фору: играй крестиками.") + human=X + computer=O + else: + print("\nТвоя удаль тебя погубит... Буду начинать я.") + computer=X + human=O + 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]) +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("Твой ход. Выбери одно из полей (0-8):", 0, NUM_SQUARES) + if move not in legal: + print("\nСмешной человек! Это поле уже занято. Выбери другое.\n") + print("Ладно...") + return move +def computer_move(board, computer, human): + 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 + board[move] = EMPTY + for move in legal_moves(board): + board[move]=human + if winner(board)==human: + print(move) + return move + 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 O + else: + return X +def congrat_winner(the_winner, computer, human): + if the_winner !=TIE: + print("Три", the_winner, "в ряд!\n") + else: + print("Ничья!\n") + if the_winner==computer: + print("Победа за мной.\nВот еще один довод в пользу того. что компьютеры превосходят людей во всем.") + elif the_winner==human: + print("Я поздравляю тебя с победой. Но...\nКлянусь: я, компьютер, не допущу этого больше никогда!") + elif the_winner==TIE: + print("Сегодня тебе очень повезло: НИЧЬЯ.\nЗавтра уже не суждено произойти этому сново.") +def main(): + display_instruct() + computer, 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 для выхода") \ No newline at end of file diff --git a/task_1_15.py b/task_1_15.py new file mode 100644 index 00000000..18e7d717 --- /dev/null +++ b/task_1_15.py @@ -0,0 +1,9 @@ +# Задача 5. Вариант 15. +# Напишите программу, которая бы при запуске случайным образом +# отображала название одного из двенадцати городов, входящих в Золотое кольцо России. +#Черников А.С. + +import random +names = ('Переславль-Залесский', 'Ростов Великий', 'Углич', 'Ярославль', 'Кострома', 'Плёс', 'Суздаль', 'Владимир', 'Юрьев-Польский', 'Александров','Сергиев Посад', 'Тутаев') +print ("Один из двенадцати городов, входящих в Золотое кольцо России --- \n\n" + random.choice(names)) +input ('\n\nНажмите Enter, чтобы продолжить') \ No newline at end of file diff --git a/task_2_15.py b/task_2_15.py new file mode 100644 index 00000000..21d3572a --- /dev/null +++ b/task_2_15.py @@ -0,0 +1,8 @@ +#Задача 2. Вариант 15. +#Напишите программу, которая будет выводить на экран наиболее понравившееся +#вам высказывание, автором которого является Плутарх. Не забудьте о том, что +#автор должен быть упомянут на отдельной строке. +#Черников А.С. + +print('Беседа должна быть столь же общим достоянием пирующих, как и вино.\n Плутарх') +input('\n\nНажмите Enter, чтобы продолжить') \ No newline at end of file diff --git a/task_3_15.py b/task_3_15.py new file mode 100644 index 00000000..115594ac --- /dev/null +++ b/task_3_15.py @@ -0,0 +1,11 @@ +#Задача 3. Вариант 15. +#Напишите программу, которая выводит имя "Лариса Петровна Косач-Квитка", и +#запрашивает его псевдоним. Программа должна сцеплять две эти строки и +#выводить полученную строку, разделяя имя и псевдоним с помощью тире +#Черников А.С. + +print('Герой нашей сегодняшней программы - Лариса Петровна Косач-Квитка') +name = input ('Какой ее псевдоним: ') +print('\nПод каким же именем мы знаем этого человека. Ваш ответ: ',name) +print('Все верно Лариса Петровна Косач-Квитка - ',name) +input('\n\nНажмите Enter, чтобы продолжить') \ No newline at end of file diff --git a/task_4_15.py b/task_4_15.py new file mode 100644 index 00000000..4c19a08b --- /dev/null +++ b/task_4_15.py @@ -0,0 +1,13 @@ +#Задача 4. Вариант 15. +#Напишите программу, которая выводит имя, под которым скрывается Анри Мари +#Бейль. Дополнительно необходимо вывести область интересов указанной +#личности, место рождения, годы рождения и смерти (если человек умер), +#вычислить возраст на данный момент (или момент смерти). Для хранения всех +#необходимых данных требуется использовать переменные. После вывода +#информации программа должна дожидаться пока пользователь нажмет Enter для +#выхода. +#Черников А.С. + + +print('Анри Мари Бейль более известен под псевдонимом Стендаль \nОбласть интересов: писатель \nМесто рождения: Гренобль, Франция \nГод рождения:1783 \nГод смерти: 1842 \nВозраст при смерти: ',1842-1783) +input('\n\nНажмите Enter, чтобы продолжить') \ No newline at end of file diff --git a/task_5_15.py b/task_5_15.py new file mode 100644 index 00000000..026899b1 --- /dev/null +++ b/task_5_15.py @@ -0,0 +1,8 @@ +#Задача 1. Вариант 15. +#Напишите программу, которая будет сообщать род деятельности и псевдоним под +#которым скрывается Аркадий Петрович Голиков. После вывода информации +#программа должна дожидаться пока пользователь нажмет Enter для выхода. +#Черников А.С. + +print('Аркадий Петрович Голиков более известен под псевдонимом Гайдар') +input('\n\nНажмите Enter, чтобы продолжить') \ No newline at end of file diff --git a/task_6_15.py b/task_6_15.py new file mode 100644 index 00000000..c9a80761 --- /dev/null +++ b/task_6_15.py @@ -0,0 +1,19 @@ +#Задача 1. Вариант 15. +#Создайте игру, в которой компьютер загадывает название одного из двенадцати городов, +#входящих в Золотое кольцо России, а игрок должен его угадать. +#Черников А.С. + +import random +cityes = ["Переславль-Залесский", "Ростов Великий", "Углич", "Ярославль", "Кострома", "Плёс", "Суздаль", "Владимир", "Юрьев-Польский", "Александров", "Сергиев Посад", "Тутаев"] +rightAnswer = random.choice(cityes) +answer = "" +print("Программа случайным образом загадывает название одного из двенадцати городов, входящих в Золотое кольцо России, а игрок должен угадать.") +while answer != rightAnswer: + answer = input("Назовите один из городов, входящих в Золотое кольцо России: ") + if answer == rightAnswer: + print("\nВсе верно!") + + else: + print("\nВы не угадали!!!\Правильный ответ: ", rightAnswer) +input("\n\nНажмите Enter для выхода") + diff --git a/task_7_15.py b/task_7_15.py new file mode 100644 index 00000000..99d7a960 --- /dev/null +++ b/task_7_15.py @@ -0,0 +1,22 @@ +#Задача 7. Вариант 15 +#1-50. Разработайте систему начисления очков для задачи 6, +#в соответствии с которой игрок получал бы большее количество баллов за меньшее количество попыток. +#Черников А.С. + +import random,string +cityes = ["Переславль-Залесский", "Ростов Великий", "Углич", "Ярославль", "Кострома", "Плёс", "Суздаль", "Владимир", "Юрьев-Польский", "Александров", "Сергиев Посад", "Тутаев"] +rightAnswer = random.choice(cityes) +money = 10000 +answer = "" +print("Программа случайным образом загадывает название одного из двенадцати городов, входящих в Золотое кольцо России, а игрок должен угадать.\n") +print("Чем меньше попыток вы используете, тем больше баллов вы заработаете.\n") +while answer != rightAnswer: + answer = input("Назовите один из городов, входящих в Золотое кольцо России: ") + if answer == rightAnswer: + print("\nВсе верно!") + print("Вам начислено", money,"баллов.") + + else: + money-=1000 + print("\nВы не угадали!!!\nПопробуйте еще раз\n\n") +input("\n\nНажмите Enter для выхода") \ No newline at end of file diff --git a/task_8_15.py b/task_8_15.py new file mode 100644 index 00000000..b33e58b3 --- /dev/null +++ b/task_8_15.py @@ -0,0 +1,39 @@ +#Задача 8. Вариант 15 +#Доработайте игру "Анаграммы" (см. М.Доусон Программируем на Python. Гл.4) так, чтобы к каждому слову полагалась подсказка. Игрок должен получать право на подсказку в том случае, если у него нет никаких предположений. Разработайте систему начисления очков, по которой бы игроки, отгадавшие слово без подсказки, получали больше тех, кто запросил подсказку. +#Черников А.С + +import random +ranw = ("монитор", "клавиатура", "колонки", "мышка", "система", "питон") +word = random.choice(ranw) +correct = word + +idk = "Не знаю" +podskazka = word[0] + word[1] + word[2] + word[3] +jumble = "" +while word: + position = random.randrange(len(word)) + jumble += word[position] + word = word[:position] + word[(position + 1):] + +scores = 10 +print("""Добро пожаловать в игру 'Анаграммы'! + Надо переставить буквы так, чтобы получилось осмысленное слово. Если вам нужна подсказка введите: "Не знаю". + Но учтите, если вы не будете использовать подсказку, кол-во заработанных очков будет больше. + (Для выхода нажмите Enter, не вводя своей версии.)""") +print("Вот анаграмма: ", jumble) +guess = input("\nПопробуйте отгадать исходное слово: ") +while guess != "" and guess != correct: + if guess != correct and not guess == idk: + print("К сожалению, вы неправы.") + guess = input("\nПопробуйте отгадать исходное слово: ") + if guess == idk: + scores -= 5 + print("\nПодсказка! Первые три буквы слова!", podskazka) + guess = input("Попробуйте отгадать исходное слово: ") + if guess == correct: + print("Да, именно так! Вы отгадали!\n") + +if scores < 0: + scores = 0 +print("Спасибо за игру! У вас", scores, "очков!") +input("\n\nНажмите Enter для выхода") \ No newline at end of file diff --git a/task_9_15.py b/task_9_15.py new file mode 100644 index 00000000..c08c224c --- /dev/null +++ b/task_9_15.py @@ -0,0 +1,41 @@ +#Задача 9. Вариант 15 +#Создайте игру, в которой компьютер выбирает какое-либо слово, а игрок должен его отгадать. Компьютер сообщает игроку, сколько букв в слове, и дает пять попыток узнать, есть ли какая-либо буква в слове, причем программа может отвечать только "Да" и "Нет". Вслед за тем игрок должен попробовать отгадать слово. + +#Черников А.С. +#07.04.2017 +import random +WORDS = ("питон", "анаграмма", "контрольный", "РГСУ", "ФИТиТБ", "студент") +word = random.choice(WORDS) +print("\t\tЗдравствуй игрок!") +print("Попробуй угадать с пяти попыток слово, которое загадал компьютер.") +print("Ты можешь спрашивать, есть ли определенная буква в слове. А потом скажешь слово.") +print("Итак, поехали!") +print("\nКоличество букв в слове:", len(word)) + +tries = 5 +letter = () +while tries >= 1: + letter = str(input("В загаданном слове есть буква: ")) + if letter not in word: + tries -= 1 + print("\nВы ошиблись, такой буквы нет в слове!") + print(" У вас осталось", tries, "попыток(ки)!") + if letter in word: + tries -= 1 + print("\nВы угадали, эта буква есть в слове!") + print("У вас осталось", tries, "попыток(ки)!") + +i_dont_know = "Не знаю" +print("\nВаши 5 попыток закончились, вы готовы угадать слово?") +print("Если вы сдались и не хотите продолжать, напишите 'Не знаю'.") +correct = (input("\nЭто слово: ")) + +while correct != word: + print("Попробуйте еще раз!") + correct = (input("\nЭто слово: ")) + if correct == word: + print("\nПоздравляю! Вы выиграли!") + if correct == i_dont_know: + print("\nОчень жаль!") + break +input("\nНажмите Enter для выхода") \ No newline at end of file