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

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


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

Упражнение 125. Тасуем колоду карт


##

# Создаем колоду карт и перетасовываем ее # from random import randrange

## Генерируем стандартную колоду карт с четырьмя мастями и 13 номиналами в каждой # @return список карт с каждой картой, представленной двумя символами def createDeck(): # Создаем список для хранения карт cards = []

# Проходим по всем мастям и номиналам for suit in ["s", "h", "d", "c"]:

for value in ["2", "3", "4", "5", "6", "7", "8", "9", \ "T", "J", "Q", "K", "A"]:

# Генерируем карту и добавляем ее в колоду cards.append(value + suit)

# Возвращаем целую колоду return cards

## Тасуем колоду, переданную в функцию в качестве параметра

# @param cards – список карт для тасования

# @return (None) def shuffle(cards): # Проходим по картам for i in range(0, len(cards)): # Выбираем случайный индекс между текущим индексом и концом списка other_pos = randrange(i, len(cards))

# Меняем местами текущую карту со случайно выбранной temp = cards[i] cards[i] = cards[other_pos] cards[other_pos] = temp

# Отображаем колоду до и после тасования def main():

cards = createDeck() print("Исходная колода карт: ") print(cards) print()

shuffle(cards) print("Перетасованная колода карт: ") print(cards)

# Вызываем основную функцию, только если программа не была импортирована как модуль if __name__ == "__main__": main()

Упражнение 128. Подсчитать элементы в списке


##

# Подсчитываем количество элементов в списке, больших или равных

# заданному минимуму и меньших заданного максимума

#

## Определяем, сколько элементов в списке больше или равны

# заданному минимуму и меньше заданного максимума

# @param data – список значений для обработки

# @param mn – минимальная граница

# @param mx – максимальная граница # @return количество элементов e, отвечающее условию mn <= e < mx def countRange(data, mn, mx): # Подсчитываем количество элементов в списке из указанного диапазона count = 0 for e in data: # Проверяем каждый элемент if mn <= e and e < mx: count = count + 1

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

# Демонстрируем работу функции countRange def main(): data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# Случай, когда несколько элементов входят в диапазон print("Подсчитываем количество элементов в списке [1..10] между 5 и 7...") print("Результат: %d Ожидание: 2" % countRange(data, 5, 7))

# Случай, когда все элементы входят в диапазон print("Подсчитываем количество элементов в списке [1..10] между –5 и 77...") print("Результат: %d Ожидание: 10" % countRange(data, –5, 77))

# Случай, когда ни один из элементов не входит в диапазон print("Подсчитываем количество элементов в списке [1..10] между 12 и 17...") print("Результат: %d Ожидание: 0" % countRange(data, 12, 17))

# Случай, когда список пуст print("Подсчитываем количество элементов в списке [] между 0 и 100...") print("Результат: %d Ожидание: 0" % countRange([], 0, 100))

# Случай, когда в списке есть дубликаты data = [1, 2, 3, 4, 1, 2, 3, 4] print("Подсчитываем количество элементов в списке", data, "между 2 и 4...") print("Результат: %d Ожидание: 4" % countRange(data, 2, 4))

# Вызов основной программы main()

Упражнение 129. Разбиение строки на лексемы


##

# Разбиение строки, содержащей математическое выражение, на лексемы

#

## Преобразуем математическое выражение в список лексем

# @param s – строка для разбора # @return список лексем строки s или пустой список, если возникла ошибка def tokenList(s) : # Удаляем все пробелы из строки s s = s.replace(" ", "")

# Проходим по символам в строке, определяя лексемы и добавляя их к списку tokens = [] i = 0 while i < len(s): # Обрабатываем односимвольные лексемы: *, /, ˆ, ( и ) if s[i] == "*" or s[i] == "/" or s[i] == "ˆ" or \ s[i] == "(" or s[i] == ")" or s[i] == "+" or s[i] == "–":

tokens.append(s[i]) i = i + 1

# Обрабатываем числа без лидирующих + или – elif s[i] >= "0" and s[i] <= "9":

num = "" # Добавляем символы в лексему, пока они представляют собой цифры while i < len(s) and s[i] >= "0" and s[i] <= "9":

num = num + s[i] i = i + 1 tokens.append(num)

# Наличие других символов означает недействительность выражения. # Возвращаем пустой список для сигнализации возникновения ошибки else: return [] return tokens

# Запрашиваем выражение у пользователя, разбиваем на лексемы и отображаем результат def main():

exp = input("Введите математическое выражение: ") tokens = tokenList(exp) print("Лексемы:", tokens)

# Вызываем основную функцию, только если программа не была импортирована как модуль if __name__ == "__main__": main()
1   ...   59   60   61   62   63   64   65   66   ...   69


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