книга заданий пайтон. книга практических заданий, pyton. Сборник упражнений Введение в язык Python с задачами и решениями Бен Стивенсон Москва, 2021 удк 004. 438Python
Скачать 2.24 Mb.
|
Упражнение 146. Карточка лото## # Создадим и отобразим случайную карточку лото # from random import randrange NUMS_PER_LETTER = 15 ## Создание случайной карточки для игры в лото # @return словарь с ключами, представляющими буквы B, I, N, G и O, # и списком номеров под каждой буквой def createCard(): card = {} # Диапазон целых чисел для букв lower = 1 upper = 1 + NUMS_PER_LETTER # Для каждой из пяти букв for letter in ["B", "I", "N", "G", "O"]: # Создаем пустой список для буквы card[letter] = [] # Генерируем случайные номера, пока не наберется пять уникальных while len(card[letter]) != 5: next_num = randrange(lower, upper) # Убеждаемся, что не храним дубликаты номеров if next_num not in card[letter]: card[letter].append(next_num) # Обновляем диапазон номеров для следующей буквы lower = lower + NUMS_PER_LETTER upper = upper + NUMS_PER_LETTER # Возвращаем сгенерированную карточку return card ## Выводим отформатированную карточку лото # @param card – карточка лото для отображения # @return (None) def displayCard(card): # Заголовки print("B I N G O") # Отображаем номера for i in range(5): for letter in ["B", "I", "N", "G", "O"]: print("%2d " % card[letter][i], end="") print() # Создаем случайную карточку для игры в лото и отображаем ее def main(): card = createCard() displayCard(card) # Вызываем основную функцию, только если файл не импортирован if __name__ == "__main__": main() Глава 15 Файлы и исключенияУпражнение 149. Отображаем заголовок файла## # Показываем первые 10 строк файла, имя которого передано в качестве аргумента командной строки # import sys NUM_LINES = 10 # Проверяем, что программе был передан только один аргумент командной строки if len(sys.argv) != 2: print("Передайте имя файла в качестве аргумента командной строки.") quit()
try: # Открываем файл на чтение inf = open(sys.argv[1], "r") # Читаем первую строку из файла line = inf.readline() # Продолжаем цикл, пока не прочитаем 10 строк или не дойдем до конца файла count = 0 while count < NUM_LINES and line != "": # Удаляем символ конца строки и увеличиваем счетчик line = line.rstrip() count = count + 1 # Отображаем строку print(line) # Читаем следующую строку из файла line = inf.readline() # Закрываем файл inf.close() except IOError: # Отображаем ошибку, если с чтением из файла возникли проблемы print("Ошибка при доступе к файлу.") Упражнение 150. Отображаем конец файла## # Показываем первые 10 строк файла, имя которого передано в качестве аргумента командной строки # import sys NUM_LINES = 10 # Проверяем, что программе был передан только один аргумент командной строки if len(sys.argv) != 2: print("Передайте имя файла в качестве аргумента командной строки.") quit() try: # Открываем файл на чтение inf = open(sys.argv[1], "r") # Читаем файл, сохраняя NUM_LINES последних строк lines = [] for line in inf: # Добавляем последнюю прочитанную строку к концу списка lines.append(line) # Если у нас накопилось больше NUM_LINES строк, удаляем самую старую if len(lines) > NUM_LINES: lines.pop(0) # Закрываем файл inf.close() except: print("Ошибка при доступе к файлу.") quit() # Отображаем последние строки из файла for line in lines: print(line, end="") Упражнение 151. Сцепляем файлы## # Сцепляем два или более файлов и отображаем результат # import sys # Убедимся, что хотя бы один параметр был передан в качестве аргумента командной строки if len(sys.argv) == 1: print("Нужно передать программе хотя бы один аргумент.") quit() # Обрабатываем все файлы, имена которых были переданы в качестве аргументов for i in range(1, len(sys.argv)):
fname = sys.argv[i] try: # Открываем текущий файл на чтение inf = open(fname, "r") # Отображаем файл for line in inf: print(line, end="") # Закрываем файл inf.close() except: # Отображаем предупреждение, но не завершаем выполнение программы print("Невозможно открыть/отобразить файл", fname) |