книга заданий пайтон. книга практических заданий, pyton. Сборник упражнений Введение в язык Python с задачами и решениями Бен Стивенсон Москва, 2021 удк 004. 438Python
Скачать 2.24 Mb.
|
Упражнение 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() |