понедельник, 3 сентября 2018 г.

Майкл Доусон - Программируем на Python, ответ на 1-ое задание 7-ой главы...

Доработайте игру "Викторина" таким образом, чтобы у каждого вопроса появился свой "номинал" - уникальное количество очков. В конце игры сумма очков пользователя должна стать равной сумме номиналов вопросов, на которые он ответил верно.

В начале я очень запутался.
Меня очень долго вводила в смущение фраза "В конце игры сумма очков пользователя должна стать равной сумме номиналов вопросов, на которые он ответил верно." Тогда просто ставим счетчик после значения score, который так же будет считать + 1 каждый раз, когда ответили верно. Будет выполняться одно условие, но тогда не будет уникальности номиналов.
Если же номинал будет разный, то мы не сможем сделать равное кол-во с очками.
В общем пришлось поломать голову.
Достал оригинал, там написано: "the players score should be the total of all the points values of the questions he or she answers correctly", то есть "очки игроков должны быть суммой очков, на которые он правильно ответил".
Интересно, я условие первоначальное один так интерпретировал, или здесь перевод на самом деле неккоректный?

По поводу номиналов. Можете убрать очки, чтобы не путаться, а можете просто добавить номиналы  в первоначальное тело программы.
Я сделал так, что после каждого ответа рандомилось число от 1 до 4 - это и будет номинал, добавляемый в общую копилку.

Майкл Доусон - Программируем на Python, ответ на 4-е задание 6-ой главы...

Напишите такую функцию computer_move(), которая сделала бы стратегию компьютера безупречной. Проверьте, можно ли создать непобедимого противника. 

Да, можно.
Поискав примеры в интернете, может кто-то уже пытался это сделать и мы возьмем его алгоритм. Их много, выделю основные.
Вот пример на С#, его мы и возьмем за основу. 
Ну а по самой теории, можно почитать здесь.

Прочитав все, мы имеем два варианта.
Либо пишем максимально разветвленную структуру в зависимости от хода человека (не сложно, но много писать).
Либо улучшаем параметр BEST_MOVES на основе вычитанной стратегии, присваивая ему значения (5, 0, 8, 6, 2, 1, 3, 7, 5) вместо (4, 0, 2, 6, 8, 1, 3, 5, 7).
После этого, я много раз пытался его победить, но не получилось. Так что может это и есть безпроигрышная стратегия.

среда, 22 августа 2018 г.

Майкл Доусон - Программируем на Python, ответ на 3-е задание 6-ой главы...

# Доработайте новую версию игры «Отгадай число» (которую вы создали, решая
# предыдущую задачу) так, чтобы основная часть программы стала функцией main().
# Для того чтобы игра началась, не забудьте вызвать эту функцию глобально.

import random

print("\t\tДобро пожаловать в игру 'Отгадай число'!")
print("Компьютер загадал натуральное число из диапазона от 1 до 100.")
print("Попытайтесь отгадать его зха минимальное число попыток.\n")

Майкл Доусон - Программируем на Python, ответ на 2-ое задание 6-ой главы...

# Доработайте игру «Отгадай число» из главы З так,
# чтобы в ней нашла применение функция ask_number().

# Игра "отгадай число"

import random

print("\t\tДобро пожаловать в игру 'Отгадай число'!")
print("Компьютер загадал натуральное число из диапазона от 1 до 100.")
print("Попытайтесь отгадать его зха минимальное число попыток.\n")

Майкл Доусон - Программируем на Python, ответ на 1-ое задание 6-ой главы...

# Доработайте функцию ask_number() так, чтобы ее можно было вызывать
# еще с одним параметром - кратностью (величиной шага).
# Сделайте шаг по умолчанию равным 1.

def ask_number(question, low, high, step = 1):
    """Просит ввести число из диапазона"""
    response = None
    while response not in range(low, high, step):
        response = int(input(question))
    return response

вторник, 21 августа 2018 г.

Майкл Доусон - Программируем на Python, ответ на 4-ое задание 5-ой главы...

# coding=utf-8
"""
Доработайте программу "Кто твой папа? так, чтобы можно было,
введя имя человека, узнать, кто его дед. Программа должна
по-прежнему пользоваться словарем с парами "сын-отец".
Подумайте, как включить в этот словарь несколько
поколений. """

Майкл Доусон - Программируем на Python, ответ на 3-е задание 5-ой главы...

# coding=utf-8
"""
Напишите программу "Кто твой папа?", в которой пользователь будет
вводить имя человека, а программа - называть отца этого человека.
Чтобы стало интересней, можно "научить" программу родственным
отношениям среди литературных персонажей, исторических персонажей,
исторических лиц и современных знаменитостей.
Предоставьте пользователю возможность добавлять,
заменять и удалять пары "сын-отец"."""

Майкл Доусон - Программируем на Python, ответ на 2-ое задание 5-ой главы...

""" coding=utf-8
Напишите программу "Генератор персонажей" для ролевой игры.
Пользователю должно быть предоставлено 30 пунктов,которые можно
распределить между четырями характеристиками: Сила, Здоровье,
Мудрость и Ловкость. Надо сдлать так, чтобы пользователь мог
не только брать эти пункты из общего"пула", но и возвращать их туда из
характеристик, которым он решит присвоить другие значения."""

""" Также, хоть это и не требуется в задании, мы будем требовать
от игрока, чтобы он улаживался в отведенные 30 очков и использовал их все.

Майкл Доусон - Программируем на Python, ответ на 1-ое задание 5-ой главы...

# coding=utf-8
# Создайте программу, которая будет выводить список слов в случайном порядке.
# На экране должны печататься без повторений все слова из представленного списка.
import random

print("Введите 4 слова для демонстрации программы:")
a = input("Первое слово: \n")
b = input("Второе слово: \n")
c = input("Третье слово: \n")
d = input("Четвертое слово: \n")