From c3c050576f03213061aac5b51fb41bb323d7d993 Mon Sep 17 00:00:00 2001 From: alina2012777 Date: Wed, 15 Mar 2017 14:31:50 +0300 Subject: [PATCH 01/16] Created readme.md --- pmi/2016/Kungurceva/readme.md | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 pmi/2016/Kungurceva/readme.md diff --git a/pmi/2016/Kungurceva/readme.md b/pmi/2016/Kungurceva/readme.md new file mode 100644 index 00000000..0868dbe6 --- /dev/null +++ b/pmi/2016/Kungurceva/readme.md @@ -0,0 +1,2 @@ +#Кунгурцева Алина Викторовна +Вариант 7 \ No newline at end of file From 84692f3baf27dc2209fec66c4c7e63bb9567095a Mon Sep 17 00:00:00 2001 From: alina2012777 Date: Wed, 15 Mar 2017 14:33:14 +0300 Subject: [PATCH 02/16] Created task1.py --- pmi/2016/Kungurceva/task1.py | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 pmi/2016/Kungurceva/task1.py diff --git a/pmi/2016/Kungurceva/task1.py b/pmi/2016/Kungurceva/task1.py new file mode 100644 index 00000000..5cce9d0e --- /dev/null +++ b/pmi/2016/Kungurceva/task1.py @@ -0,0 +1,9 @@ +#Задача 1. Вариант 7. +#Напишите программу, которая будет сообщать род деятельности и псевдоним под которым скрывается Эдуард Георгиевич Зюбин. После вывода информации программа должна дожидаться пока пользователь нажмет Enter для выхода. +#Кунгурцева А.В. +#15.03.2017 +# +#Программа сообщает род деятельности и псевдоним человека +print ("Задача 1") +print ("Эдуард Георгиевич Зюбин - писатель, известный под псевдонимом \"Бедный Демьян\"") +input ("\nНажмите Enter для выхода") \ No newline at end of file From 015af30408233c5ed3edbd3c9e3840e687ede9eb Mon Sep 17 00:00:00 2001 From: alina2012777 Date: Wed, 15 Mar 2017 14:33:26 +0300 Subject: [PATCH 03/16] Created task1.py --- pmi/2016/Kungurceva/task1.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/pmi/2016/Kungurceva/task1.py b/pmi/2016/Kungurceva/task1.py index 5cce9d0e..a822afe7 100644 --- a/pmi/2016/Kungurceva/task1.py +++ b/pmi/2016/Kungurceva/task1.py @@ -2,8 +2,6 @@ #Напишите программу, которая будет сообщать род деятельности и псевдоним под которым скрывается Эдуард Георгиевич Зюбин. После вывода информации программа должна дожидаться пока пользователь нажмет Enter для выхода. #Кунгурцева А.В. #15.03.2017 -# -#Программа сообщает род деятельности и псевдоним человека print ("Задача 1") print ("Эдуард Георгиевич Зюбин - писатель, известный под псевдонимом \"Бедный Демьян\"") input ("\nНажмите Enter для выхода") \ No newline at end of file From a140358f4def40990e900cbedb810381a614730f Mon Sep 17 00:00:00 2001 From: alina2012777 Date: Wed, 15 Mar 2017 14:34:11 +0300 Subject: [PATCH 04/16] Created task2.py --- pmi/2016/Kungurceva/task2.py | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 pmi/2016/Kungurceva/task2.py diff --git a/pmi/2016/Kungurceva/task2.py b/pmi/2016/Kungurceva/task2.py new file mode 100644 index 00000000..e794ba97 --- /dev/null +++ b/pmi/2016/Kungurceva/task2.py @@ -0,0 +1,8 @@ +#Задача 2. Вариант 7. +#Напишите программу, которая будет выводить на экран наиболее понравившееся вам высказывание, автором которого является Стендаль. Не забудьте о том, что автор должен быть упомянут на отдельной строке. +#Кунгурцева А.В. +#15.03.2017 +print ("Задача 2") +print ("\nВ мире чувства есть лишь один закон — составить счастье того, кого любишь.") +print ("\n\t\t\t\t\t\t\t\t\tСтендаль") +input ("") From 547d840d87e113545a43fda6577b9ea7afcb4d66 Mon Sep 17 00:00:00 2001 From: alina2012777 Date: Wed, 15 Mar 2017 14:35:03 +0300 Subject: [PATCH 05/16] Created task3.py --- pmi/2016/Kungurceva/task3.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 pmi/2016/Kungurceva/task3.py diff --git a/pmi/2016/Kungurceva/task3.py b/pmi/2016/Kungurceva/task3.py new file mode 100644 index 00000000..9f58a2f0 --- /dev/null +++ b/pmi/2016/Kungurceva/task3.py @@ -0,0 +1,12 @@ +#Задача 3. Вариант 7. +#Напишите программу, которая выводит имя "Мэри Анн Эванс", и запрашивает его псевдоним. Программа должна сцеплять две эти строки и выводить полученную строку, разделяя имя и псевдоним с помощью тире. +#Кунгурцева А.В. +#15.03.2017 +print ("Задача 3") +name = 'Мэри Анн Эванс' +print ("\nЗнаете ли вы",name,"?") +nickname = input ("Напишите её псевдоним\n") +tir = ' - ' +itog = name + tir + nickname +print ("Получится:", itog) +input ("") \ No newline at end of file From 5e7ddf38c299bded604e72697bec2ad7ac8091bc Mon Sep 17 00:00:00 2001 From: alina2012777 Date: Wed, 15 Mar 2017 14:36:53 +0300 Subject: [PATCH 06/16] Created task4.md --- pmi/2016/Kungurceva/task4.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 pmi/2016/Kungurceva/task4.md diff --git a/pmi/2016/Kungurceva/task4.md b/pmi/2016/Kungurceva/task4.md new file mode 100644 index 00000000..a035a3bb --- /dev/null +++ b/pmi/2016/Kungurceva/task4.md @@ -0,0 +1,17 @@ +#Задача 4. Вариант 7. +#Напишите программу, которая выводит имя, под которым скрывается Мария Луиза Чеччарелли. Дополнительно необходимо вывести область интересов указанной личности, место рождения, годы рождения и смерти (если человек умер), вычислить возраст на данный момент (или момент смерти). Для хранения всех необходимых данных требуется использовать переменные. После вывода информации программа должна дожидаться пока пользователь нажмет Enter для выхода. +#Кунгурцева А.В. +#15.03.2017 +print ("Задача 4") +name = 'Мария Луиза Чеччарелли' +intrestings = 'искусство' +realname = 'Моника Витти' +place = 'Рим, Италия' +yearb = 1931 +years = 85 +print (name, "более известна, как итальянская актриса", realname, ".") +print ("Место рождения:", place) +print ("Год рождения", yearb) +print ("Возраст:", years) +print ("Область интересов:", intrestings) +input ("\n\nНажмите Enter для выхода") From cb1abf14e8df03b322744f0820b9fa845ce10e20 Mon Sep 17 00:00:00 2001 From: alina2012777 Date: Wed, 15 Mar 2017 14:38:50 +0300 Subject: [PATCH 07/16] Created task5.py --- pmi/2016/Kungurceva/task5.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 pmi/2016/Kungurceva/task5.py diff --git a/pmi/2016/Kungurceva/task5.py b/pmi/2016/Kungurceva/task5.py new file mode 100644 index 00000000..b265f2f5 --- /dev/null +++ b/pmi/2016/Kungurceva/task5.py @@ -0,0 +1,23 @@ +#Задача 5. Вариант 7. +#Напишите программу, которая бы при запуске случайным образом отображала имя одного из семи гномов, друзей Белоснежки. +#Кунгурцева А.В. +#15.03.2017 +import random +print ("Задача 5") +print ("\nПрограмма случайным образом отображает имя одного из семи гномов:\n") +name = random.randint(1,7) +if name == 1 : + print ("Умник") +elif name == 2 : + print ("Ворчун") +elif name == 3 : + print ("Весельчак") +elif name == 4 : + print ("Соня") +elif name == 5 : + print ("Скромник") +elif name == 6 : + print ("Чихун") +elif name == 7 : + print ("Простак") +input ("\nНажмите Enter для выхода") From d4cce7a17fcedba93a6ac3a72d34950db3c1ebd0 Mon Sep 17 00:00:00 2001 From: alina2012777 Date: Wed, 15 Mar 2017 14:39:23 +0300 Subject: [PATCH 08/16] Updated task4.py --- pmi/2016/Kungurceva/task4.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 pmi/2016/Kungurceva/task4.py diff --git a/pmi/2016/Kungurceva/task4.py b/pmi/2016/Kungurceva/task4.py new file mode 100644 index 00000000..a035a3bb --- /dev/null +++ b/pmi/2016/Kungurceva/task4.py @@ -0,0 +1,17 @@ +#Задача 4. Вариант 7. +#Напишите программу, которая выводит имя, под которым скрывается Мария Луиза Чеччарелли. Дополнительно необходимо вывести область интересов указанной личности, место рождения, годы рождения и смерти (если человек умер), вычислить возраст на данный момент (или момент смерти). Для хранения всех необходимых данных требуется использовать переменные. После вывода информации программа должна дожидаться пока пользователь нажмет Enter для выхода. +#Кунгурцева А.В. +#15.03.2017 +print ("Задача 4") +name = 'Мария Луиза Чеччарелли' +intrestings = 'искусство' +realname = 'Моника Витти' +place = 'Рим, Италия' +yearb = 1931 +years = 85 +print (name, "более известна, как итальянская актриса", realname, ".") +print ("Место рождения:", place) +print ("Год рождения", yearb) +print ("Возраст:", years) +print ("Область интересов:", intrestings) +input ("\n\nНажмите Enter для выхода") From 0db28e1045ce62b9aa06ea6fd88862dea5e393fd Mon Sep 17 00:00:00 2001 From: alina2012777 Date: Wed, 15 Mar 2017 14:39:24 +0300 Subject: [PATCH 09/16] Deleted task4.md --- pmi/2016/Kungurceva/task4.md | 17 ----------------- 1 file changed, 17 deletions(-) delete mode 100644 pmi/2016/Kungurceva/task4.md diff --git a/pmi/2016/Kungurceva/task4.md b/pmi/2016/Kungurceva/task4.md deleted file mode 100644 index a035a3bb..00000000 --- a/pmi/2016/Kungurceva/task4.md +++ /dev/null @@ -1,17 +0,0 @@ -#Задача 4. Вариант 7. -#Напишите программу, которая выводит имя, под которым скрывается Мария Луиза Чеччарелли. Дополнительно необходимо вывести область интересов указанной личности, место рождения, годы рождения и смерти (если человек умер), вычислить возраст на данный момент (или момент смерти). Для хранения всех необходимых данных требуется использовать переменные. После вывода информации программа должна дожидаться пока пользователь нажмет Enter для выхода. -#Кунгурцева А.В. -#15.03.2017 -print ("Задача 4") -name = 'Мария Луиза Чеччарелли' -intrestings = 'искусство' -realname = 'Моника Витти' -place = 'Рим, Италия' -yearb = 1931 -years = 85 -print (name, "более известна, как итальянская актриса", realname, ".") -print ("Место рождения:", place) -print ("Год рождения", yearb) -print ("Возраст:", years) -print ("Область интересов:", intrestings) -input ("\n\nНажмите Enter для выхода") From 58dd545d2c7f74d192badd607df1e8ea6e54d77b Mon Sep 17 00:00:00 2001 From: alina2012777 Date: Wed, 15 Mar 2017 14:39:49 +0300 Subject: [PATCH 10/16] Updated task4.py From 6ae6b86770534b63d401b272c09289fa1e47b9ad Mon Sep 17 00:00:00 2001 From: alina2012777 Date: Wed, 15 Mar 2017 14:42:05 +0300 Subject: [PATCH 11/16] Created task6.py --- pmi/2016/Kungurceva/task6.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 pmi/2016/Kungurceva/task6.py diff --git a/pmi/2016/Kungurceva/task6.py b/pmi/2016/Kungurceva/task6.py new file mode 100644 index 00000000..bb3b0a47 --- /dev/null +++ b/pmi/2016/Kungurceva/task6.py @@ -0,0 +1,20 @@ +#Задача 6. Вариант 7. +#Создайте игру, в которой компьютер загадывает имя одного из двух сооснователей компании Google, а игрок должен его угадать. +#Кунгурцева А.В. +#15.03.2017 +import random +print ("Задача 6") +print ("\nПрограмма случайным образом загадывает имя одного из сооснователей компании Google, а игрок должен его угадать\n") +name = random.randint(1,2) +name1 = 'Ларри Пейдж' +name2 = 'Сергей Брин' +if name == 1 : + right = name1 +else : + right = name2 +password = input("Назовите имя одного из сооснователей Google:\n") +if password == right : + print ("Ответ верный, поздравляем!") +else : + print ("Вы не угадали! Правильный ответ:", right) +input ("\nНажмите Enter для выхода") \ No newline at end of file From 6ab0ae7e19d4f6d731cd2ee5bab65623ee28eca8 Mon Sep 17 00:00:00 2001 From: alina2012777 Date: Wed, 15 Mar 2017 14:44:15 +0300 Subject: [PATCH 12/16] Created task7.py --- pmi/2016/Kungurceva/task7.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 pmi/2016/Kungurceva/task7.py diff --git a/pmi/2016/Kungurceva/task7.py b/pmi/2016/Kungurceva/task7.py new file mode 100644 index 00000000..5cd20e19 --- /dev/null +++ b/pmi/2016/Kungurceva/task7.py @@ -0,0 +1,26 @@ +#Задача 7. Вариант 7. +#Разработайте систему начисления очков для задачи 6, в соответствии с которой игрок получал бы большее количество баллов за меньшее количество попыток. +#Задача 6: Создайте игру, в которой компьютер загадывает имя одного из двух сооснователей компании Google, а игрок должен его угадать. +#Кунгурцева А.В. +#15.03.2017 +import random +print ("Задача 7") +print ("\nПрограмма случайным образом загадывает имя одного из сооснователей компании Google, а игрок должен его угадать\n") +print ("Чем меньше попыток вы используете, тем больше баллов заработаете.") +name = random.randint(1,2) +name1 = 'Ларри Пейдж' +name2 = 'Сергей Брин' +tries = 1 +balls = 100 +if name == 1 : + right = name1 +else : + right = name2 +password = input("Ваше предположение:\n") +while password != right : + balls -= 10 + tries +=1 + password = input("Назовите имя одного из сооснователей Google:\n") +print("Baм удалось отгадать имя! Зто в самом деле", right) +print("Bы затратили на отгадывание всего лишь ", tries, " попыток! И получили", balls, "баллов\n") +input("\nНажмите Enter для выхода") From 7ab082f7256f9dcc97542279097e29722a11ca1c Mon Sep 17 00:00:00 2001 From: alina2012777 Date: Sat, 8 Apr 2017 22:25:55 +0300 Subject: [PATCH 13/16] Create task8.py --- pmi/2016/Kungurceva/task8.py | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 pmi/2016/Kungurceva/task8.py diff --git a/pmi/2016/Kungurceva/task8.py b/pmi/2016/Kungurceva/task8.py new file mode 100644 index 00000000..e09b8d0f --- /dev/null +++ b/pmi/2016/Kungurceva/task8.py @@ -0,0 +1,35 @@ +#Задача 8. Вариант 7. +#Доработайте игру "Анаграммы" (см. М.Доусон Программируем на Python. Гл.4) так, чтобы к каждому слову полагалась подсказка. Игрок должен получать право на подсказку в том случае, если у него нет никаких предположений. Разработайте систему начисления очков, по которой бы игроки, отгадавшие слово без подсказки, получали больше тех, кто запросил подсказку. +#Кунгурцева А.В. +#08.04.2017 +import random +WORDS = ("ромашка", "одуванчик", "роза", "колокольчик") +word = random.choice(WORDS) +correct = word +jumble = " " +balls = 100 +help = word[0] + word[1] + word[2] +while word : + position = random.randrange(len(word)) + jumble += word[position] + word = word[:position] + word[(position + 1):] +print(""" + Добро пожаловать в игру "Анаграммы"! +Надо переставить буквы так, чтобы получилось осмысленное слово. + Если вам потребуется подсказка, введите "Не знаю" + Но тогда вы не сможете получить максимальный балл (100) + (Для выхода нажмите Enter, не вводя своей версии.) +""") +print("Вот анаграмма: ", jumble) +guess = input("\nПопробуйте отгадать исходное слово: ") +while (guess != correct) and (guess != "") and (balls >= 0) : + if guess == "Не знаю": + balls -= 50 + print ("Вы воспользовались подсказкой, первые три буквы - ", help ) + guess = input ("Попробуйте отгадать слово снова: ") + else: + print("Вы не правы.") + guess = input ("Попробуйте отгадать слово снова: ") +if guess == correct : + print("Верно! Вы отгадали слово и набрали ", balls, " баллов.") +input ("Нажмите Enter, чтобы выйти ") From 69b6636bad6e5ec4798d952d70e9f5b5f8610c75 Mon Sep 17 00:00:00 2001 From: alina2012777 Date: Sat, 8 Apr 2017 22:32:48 +0300 Subject: [PATCH 14/16] Create task9.py --- pmi/2016/Kungurceva/task9.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 pmi/2016/Kungurceva/task9.py diff --git a/pmi/2016/Kungurceva/task9.py b/pmi/2016/Kungurceva/task9.py new file mode 100644 index 00000000..1ac667a7 --- /dev/null +++ b/pmi/2016/Kungurceva/task9.py @@ -0,0 +1,28 @@ +#Задача 9. Вариант 7. +#Создайте игру, в которой компьютер выбирает какое-либо слово, а игрок должен его отгадать. Компьютер сообщает игроку, сколько букв в слове, и дает пять попыток узнать, есть ли какая-либо буква в слове, причем программа может отвечать только "Да" и "Нет". Вслед за тем игрок должен попробовать отгадать слово. +#Кунгурцева А.В. +#08.04.2017 +import random +WORDS = ("ромашка", "одуванчик", "роза", "колокольчик") +word = random.choice(WORDS) +tries = 5 +long = len(word) +variant = " " +print ("Добро пожаловать в игру 'Угадай слово'") +print ("Правила игры просты: Я загадываю слово, а Вы должны его отгадать.") +print ("Я скажу Вам скольво букв в слове и дам 5 попыток угадать какие именно это буквы.") +print ("Ну чтож, приступим. В этом слове ", long, " букв") +while tries > 0: + character = input("\nВведите букву, которая, как Вы думаете, есть в загаданном слове:\n") + if character in word : + print("\nДа") + else : + print("\nНет") + tries -= 1 +print("Так что это за слово?") +variant = input("Введите свой вариант:\n") +if variant == word : + print("Верно! Вы выиграли, примите мои поздравления!") +else : + print ("Нет, к сожалению, Вы не правы.") +input ("") From 11a12772301f04e0ea15ba9a8096f22331e2de35 Mon Sep 17 00:00:00 2001 From: alina2012777 Date: Sun, 9 Apr 2017 18:33:15 +0300 Subject: [PATCH 15/16] Create task10.py --- pmi/2016/Kungurceva/task10.py | 72 +++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 pmi/2016/Kungurceva/task10.py diff --git a/pmi/2016/Kungurceva/task10.py b/pmi/2016/Kungurceva/task10.py new file mode 100644 index 00000000..943f236a --- /dev/null +++ b/pmi/2016/Kungurceva/task10.py @@ -0,0 +1,72 @@ +#Задача 10. Вариант 7. +#апишите программу "Генератор персонажей" для игры. Пользователю должно быть предоставлено 30 пунктов, +#которые можно распределить между четырьмя характеристиками: Сила, Здоровье, Мудрость и Ловкость. +#Надо сделать так, чтобы пользователь мог не только брать эти пункты из общего "пула", но и возвращать +#их туда из характеристик, которым он решил присвоить другие значения. +#Кунгурцева А.В. +#09.04.2017 +balls = 30 +scores = {"Сила":"0","Здоровье":"0","Мудрость":"0","Ловкость":"0"} +punkts = 0 +choice = None +print( + """ Добро пожаловать в программу "Генератор персонажей"! + Вам предоставлено 30 пунктов, которые вы можете распределить + между следующими характеристиками: Сила, Здоровье, Мудрость, Ловкость. + """ + ) +while choice != 0 : + print( + """Меню + +0 - Выход +1 - Добавить пункты +2 - Убрать пункты +3 - Просмотреть характеристики +""") + choice = int(input("Выберите интересующий Вас пункт меню: ")) + if choice == 0 : + print("\nДо свидания.") + elif choice == 1 : + print("Для добавления пунктов Вам доступны следующие характеристики:\n") + for item in scores : + print(item) + char = str(input("\nВведите название интересующей Вас характеристики: ")) + char = char.title() + while char not in scores : + print("Такой характеристики нет.") + char = str(input("\nПопробуйте ещё раз: ")) + char = char.title() + else : + print("\nДоступно:", balls, "пунктов.") + punkts = int(input("\nВведите количество пунктов для добавления к выбранной характеристики: ")) + while (punkts > balls) or (punkts < 0) : + print("Недопустимое значение") + punkts = int(input("\nВведите другое значение, не превышающее количество доступных пунктов: ")) + scores[char] = punkts + print("\n", punkts, "пунктов было добавлено к '",char,"'\n") + balls -= punkts + elif choice == 2 : + print("\nДля удаления пунктов Вам доступны следующий характеристики:\n ") + for item in scores: + print(item) + char = str(input("\nВведите название интересующей Вас характеристики: ")) + char = char.title() + while char not in scores : + print("Такой характеристики нет.") + char = str(input("\nПопробуйте ещё раз: ")) + char = char.title() + else : + print("\nДоступно", scores[char], "пунктов:") + punkts = int(input("\nВведите количество пунктов для удаления из выбранной характеристики: ")) + while (punkts > int(scores[char])) or (punkts < 0) : + print("Недопустимое значение.") + punkts = int(input("\nВведите значение, не превышающее доступное количество пунктов: ")) + scores[char] = punkts + print("\n", punkts, "пунктов было удалено из '",char,"'\n") + elif choice == 3 : + for item in scores : + print(item, " = ", scores[item]) + else : + print("\nВыбранного вами пункта нет в меню.\n") +input ("") From a388158444f336d8df62004b3858866bfc0f14c0 Mon Sep 17 00:00:00 2001 From: alina2012777 Date: Mon, 10 Apr 2017 23:01:37 +0300 Subject: [PATCH 16/16] Create task12.py --- pmi/2016/Kungurceva/task12.py | 139 ++++++++++++++++++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 pmi/2016/Kungurceva/task12.py diff --git a/pmi/2016/Kungurceva/task12.py b/pmi/2016/Kungurceva/task12.py new file mode 100644 index 00000000..8637eea3 --- /dev/null +++ b/pmi/2016/Kungurceva/task12.py @@ -0,0 +1,139 @@ +#Задача 12. Вариант 7. +#1-50. Разработайте игру "Крестики-нолики". (см. М.Доусон Программируем на Python гл. 6). +#Кунгурцева А.В. +#10.04.2017 +X = "X" +O = "O" +EMPTY = " " +TIE = "Ничья" +NUM_SQUARES = 9 + +def display_instr(): + print("Инструкция") + +def ask_yes_no(question): + respone = None + while respone not in ("y","n"): + respone = input(question).lower() + return respone + +def ask_number(question, low, high): + respone = None + while respone not in range(low,high): + respone = int(input(question)) + return respone + +def pieces(): + go_first = ask_yes_no("Хочешь ходить первым? Выбери 'y' - да, 'n' - нет: ") + if go_first == "y": + print(""" + Ты ходишь крестиками: 0 | 1 | 2 + ---------- + 3 | 4 | 5 + ---------- + 6 | 7 | 8 """) + human = X + computer = O + else: + print(""" + Ты ходишь ноликами: 0 | 1 | 2 + ---------- + 3 | 4 | 5 + ---------- + 6 | 7 | 8 """) + human = O + computer = X + 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("\n\t",board[3],"|",board[4],"|", board[5]) + print("\t","----------") + print("\n\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 + +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("Это поле уже занято!") + 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]=human + if winner(board) == human: + print(move) + return move + board[move] = EMPTY + for move in legal_moves(board): + board[move]=human + if winner(board) == human: + 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, "в ряд") + else: + print("Ничья") + if the_winner == computer: + print("Я победил!") + elif the_winner == human: + print("Ты победил!") + elif the_winner == TIE: + print("Ничья.") + +def main(): + display_instr() + 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("Нажмите Enter, чтобы выйти")