книга заданий пайтон. книга практических заданий, pyton. Сборник упражнений Введение в язык Python с задачами и решениями Бен Стивенсон Москва, 2021 удк 004. 438Python
Скачать 2.24 Mb.
|
Упражнение 156. Сумма чисел## # Подсчитаем сумму переданных пользователем чисел, не считая нечислового ввода # # Запрашиваем у пользователя первое число line = input("Введите число: ") total = 0 # Продолжаем запрашивать числа, пока пользователь не оставит ввод пустым while line != "": try: # Пытаемся конвертировать значение в число num = float(line) # Если все прошло успешно, прибавляем введенное число к общей сумме total = total + num print("Сумма сейчас составляет", total) except ValueError: # Отображаем предупреждение и переходим к следующему вводу print("Это было не число") # Запрашиваем следующее число line = input("Введите число: ") # Отображаем сумму print("Общая сумма:", total) Упражнение 158. Удаляем комментарии## # Удаляем все комментарии из файла Python (за исключением ситуаций, когда # символ комментария указан в середине строки) # # Запрашиваем у пользователя имя исходного файла и открываем его try: in_name = input("Введите имя файла Python: ") inf = open(in_name, "r") except: # Выводим сообщение и завершаем работу программы в случае возникновения ошибки print("При открытии файла возникла проблема.") print("Завершение работы программы...") quit() # Запрашиваем у пользователя имя итогового файла и открываем его try: out_name = input("Введите имя нового файла: ") outf = open(out_name, "w") except: # Закрываем исходный файл, показываем сообщение об ошибке и завершаем программу inf.close() print("С создаваемым файлом возникла проблема.") print("Завершение работы программы...") quit()
try: # Читаем строки из исходного файла, избавляем их от комментариев и # сохраняем в новом файле for line in inf: # Находим позицию символа комментария (–1, если его нет) pos = line.find("#") # Если комментарий есть, создаем # строковый срез со всеми знаками до него # и сохраняем обратно в переменную line if pos > –1: line = line[0 : pos] line = line + "\n" # Записываем потенциально измененную # строку в новый файл outf.write(line) # Закрываем файлы inf.close() outf.close() except: # Выводим сообщение об ошибке, если что–то пошло не так print("При обработке файла возникла проблема.") print("Завершаем программу...") Упражнение 159. Случайный пароль из двух слов## # Генерируем пароль путем сцепления двух случайных слов. Длина пароля должна составлять # от 8 до 10 символов, а каждое слово должно быть длиной минимум 3 символа # from random import randrange WORD_FILE = "../Data/words.txt" Пароль, который мы создаем, должен содержать от 8 до 10 символов. Поскольку минимальная длина слова составляет 3 символа, а в пароле должно быть два слова, получается, что в пароле не может присутствовать слово длиной более 7 символов. # Читаем все слова из файла, оставляя только те из них, длина которых варьируется # от 3 до 7 символов, и сохраняем их в список words = [] inf = open(WORD_FILE, "r") for line in inf: # Удаляем символ новой строки line = line.rstrip() # Оставляем слова длиной от 3 до 7 символов if len(line) >= 3 and len(line) <= 7: words.append(line) # Закрываем файл inf.close() # Случайным образом выбираем первое слово для пароля first = words[randrange(0, len(words))] first = first.capitalize() # Выбираем второе слово для пароля до тех пор, пока оно не будет подходить по размеру password = first while len(password) < 8 or len(password) > 10: second = words[randrange(0, len(words))] second = second.capitalize() password = first + second # Отображаем случайный пароль print("Случайный пароль:", password) Упражнение 162. Книги без буквы E## # Выводим процент слов, использующих все буквы в алфавите # Также найдем букву, реже остальных встречающуюся в словах # WORD_FILE = "../Data/words.txt" # Создадим словарь со счетчиком слов, содержащих каждую букву. # Для каждой буквы инициализируем счетчик нулем counts = {} for ch in "ABCDEFGHIJKLMNOPQRSTUVWXYZ": counts[ch] = 0 # Открываем файл, обрабатываем каждое слово и обновляем словарь со счетчиками num_words = 0 inf = open(WORD_FILE, "r") for word in inf: # Переводим слово в верхний регистр и избавляемся от символа новой строки word = word.upper().rstrip() # Перед обновлением словаря нужно создать список уникальных букв в слове. # Иначе мы будем увеличивать счетчик для повторяющихся букв в слове. # Также будем игнорировать небуквенные символы unique = [] for ch in word: if ch not in unique and ch >= "A" and ch <= "Z": unique.append(ch) # Увеличим счетчики для всех букв в списке уникальных символов for ch in unique: counts[ch] = counts[ch] + 1 # Увеличиваем количество обработанных слов num_words = num_words + 1 # Закрываем файл inf.close() # Выводим результат для каждой буквы. Параллельно определяем, какая буква # встречается в словах наиболее редко, чтобы вывести ее отдельно. smallest_count = min(counts.values()) for ch in sorted(counts): if counts[ch] == smallest_count: smallest_letter = ch percentage = counts[ch] / num_words * 100 print(ch, "встречается в %.2f процентах слов" % percentage) # Отображаем самую редко используемую букву в словах print() print("Буква, от которой легче всего будет избавиться:", smallest_letter) |