Главная страница

книга заданий пайтон. книга практических заданий, pyton. Сборник упражнений Введение в язык Python с задачами и решениями Бен Стивенсон Москва, 2021 удк 004. 438Python


Скачать 2.24 Mb.
НазваниеСборник упражнений Введение в язык Python с задачами и решениями Бен Стивенсон Москва, 2021 удк 004. 438Python
Анкоркнига заданий пайтон
Дата02.10.2022
Размер2.24 Mb.
Формат файлаdocx
Имя файлакнига практических заданий, pyton.docx
ТипСборник упражнений
#709959
страница65 из 69
1   ...   61   62   63   64   65   66   67   68   69

Упражнение 137. Две игральные кости


##

# Симуляция многократного выбрасывания двух игральных костей и сравнение

# полученных результатов с ожидаемыми #

from random import randrange

NUM_RUNS = 1000

D_MAX = 6

## Симуляция выбрасывания двух шестигранных игральных костей # @return общее количество очков, выпавших на двух костях def twoDice(): # Две кости d1 = randrange(1, D_MAX + 1) d2 = randrange(1, D_MAX + 1)

# Возвращаем сумму return d1 + d2

# Симулируем многократное выбрасывание костей и отображаем результат def main(): # Составим словарь для ожидаемых значений expected = {2: 1/36, 3: 2/36, 4: 3/36, 5: 4/36, 6: 5/36, \ 7: 6/36, 8: 5/36, 9: 4/36, 10: 3/36, \

11: 2/36, 12: 1/36}

# Составим словарь для хранения результатов выбрасывания костей counts = {2: 0, 3: 0, 4: 0, 5: 0, 6: 0, 7: 0, \ 8: 0, 9: 0, 10: 0, 11: 0, 12: 0}

Словари изначально инициализированы ключами от 2 до 12. В словаре expected значения заполнены в соответствии с теорией вероятностей, тогда как в словаре counts изначально стоят нули, которые будут меняться в процессе симуляции выбрасывания костей.

Словари  215

# Проведение NUM_RUNS симуляций и подсчет результатов for i in range(NUM_RUNS):

t = twoDice() counts[t] = counts[t] + 1

# Сравниваем ожидаемые результаты с реальными print("Всего Реальный Ожидаемый") print(" процент процент") for i in sorted(counts.keys()): print("%5d %9.2f %10.2f" % \ (i, counts[i] / NUM_RUNS * 100, expected[i] * 100))

# Вызов основной функции main()

Упражнение 142. Уникальные символы


##

# Считаем уникальные символы в строке при помощи словаря

#

# Запрашиваем строку у пользователя s = input("Введите строку: ")

# Добавляем каждый символ в словарь со значением True. После окончания процедуры # количество ключей в словаре и будет отражать число уникальных символов characters = {} for ch in s: characters[ch] = True

Каждому ключу в словаре должно соответствовать значение. Но в нашем примере эти значения никогда не будут использованы, так что мы решили применить True. Вместо него мы могли использовать любое другое значение.

# Отображаем результат print("Строка содержит", len(characters), \ "уникальных символов.")

Функция len возвращает количество ключей в словаре.

Упражнение 143. Анаграммы


## # Определяем, являются ли два введенных пользователем слова анаграммами

#

## Рассчитываем распределение частоты появления символов в строке

# @param s – строка для обработки # @return словарь с количеством символов в строке def characterCounts(s): # Создаем пустой словарь counts = {}

# Обновляем словарь для каждого символа в строке for ch in s: if ch in counts:

counts[ch] = counts[ch] + 1 else: counts[ch] = 1

# Возвращаем результат return counts

# Определяем, являются ли строки, введенные пользователем, анаграммами def main(): # Запрашиваем строки у пользователя s1 = input("Введите первую строку: ") s2 = input("Введите вторую строку: ")

# Вызываем функцию для двух введенных строк counts1 = characterCounts(s1) counts2 = characterCounts(s2)

# Выводим результат if counts1 == counts2:

print("Введенные строки являются анаграммами.") else: print("Введенные строки не являются анаграммами.")

Два словаря считаются равными, если содержат одинаковое количество ключей и те же самые ассоциированные с ними значения.

# Вызов основной функции main()

Упражнение 145. Эрудит


## # Используем словарь для подсчета количества очков за собранное слово в Эрудите

#

# Создаем словарь с соответствием букв и очков за них points = {"A": 1, "B": 3, "C": 3, "D": 2, "E": 1, "F": 4, \ Словари  217

"G": 2, "H": 4, "I": 1, "J": 2, "K": 5, "L": 1, \

"M": 3, "N": 1, "O": 1, "P": 3, "Q": 10, "R": 1, \

"S": 1, "T": 1, "U": 1, "V": 4, "W": 4, "X": 8,

"Y": 4, "Z": 10}

Введенное слово мы переводим в верхний регистр, чтобы не ограничивать пользователя в выборе регистра при вводе слова. Этого результата можно было добиться и путем добавления строчных букв к словарю.

# Запрашиваем у пользователя слово word = input("Введите слово: ")

# Считаем количество очков uppercase = word.upper() score = 0 for ch in uppercase: score = score + points[ch]

# Выводим результат

print(word, "оценивается в", score, "очков.")
1   ...   61   62   63   64   65   66   67   68   69


написать администратору сайта