книга заданий пайтон. книга практических заданий, pyton. Сборник упражнений Введение в язык Python с задачами и решениями Бен Стивенсон Москва, 2021 удк 004. 438Python
Скачать 2.24 Mb.
|
Упражнение 70. Биты четности## # Рассчитать значение бита четности для набора из 8 бит, введенного пользователем # # Запрашиваем первые 8 бит line = input("Введите 8 бит информации: ") # Продолжаем цикл, пока пользователь не введет пустую строку while line != "": # Убеждаемся в правильности ввода пользователя if line.count("0") + line.count("1") != 8 or len(line) != 8: # Выводим сообщение об ошибке print("Это не 8 бит… Попробуйте еще.") else: # Считаем единички ones = line.count("1") Метод count возвращает количество вхождений указанной подстроки в строке, к которой применен. # Отображаем значение бита четности if ones % 2 == 0: print("Бит четности должен иметь значение 0.") else: print("Бит четности должен иметь значение 1.") # Считываем следующий ввод пользователя line = input("Введите 8 бит информации: ") Упражнение 73. Код Цезаря## # Реализовать код Цезаря, в котором используются символы, сдвинутые # на определенное количество позиций. # Отрицательные значения сдвига можно использовать для декодирования. # # Запрашиваем у пользователя сообщение и сдвиг message = input("Введите сообщение: ") shift = int(input("Введите сдвиг: ")) # Обрабатываем каждый символ для создания зашифрованного сообщения new_message = "" for ch in message: if ch >= "a" and ch <= "z": # Обрабатываем букву в нижнем регистре, определяя ее позицию # в алфавите (0–25), вычисляя новую позицию и добавляя букву в сообщение pos = ord(ch) – ord("a") pos = (pos + shift) % 26 new_char = chr(pos + ord("a")) new_message = new_message + new_char Функция ord преобразует символ в целочисленную позицию в таблице ASCII. Функция chr возвращает символ в таблице ASCII по позиции, переданной в качестве аргумента. elif ch >= "A" and ch <= "Z": # Обрабатываем букву в верхнем регистре, определяя ее позицию # в алфавите (0–25), вычисляя новую позицию и добавляя букву в сообщение pos = ord(ch) – ord("A") pos = (pos + shift) % 26 new_char = chr(pos + ord("A")) new_message = new_message + new_char else: # Если это не буква, просто сохраняем ее в сообщении new_message = new_message + ch # Отображаем полученное сообщение print("Новое сообщение", new_message) Упражнение 75. Палиндром или нет? ## # Определить, является ли введенная пользователем строка палиндромом # # Запрашиваем строку у пользователя line = input("Введите строку: ") # Предполагаем, что это палиндром, пока не доказано обратное is_palindrome = True # Сравниваем символы, начиная с двух сторон. Продолжаем, пока не достигнем середины или # не поймем, что это не палиндром i = 0 while i < len(line) / 2 and is_palindrome: # Если символы не равны, сразу понимаем, что это не палиндром if line[i] != line[len(line) – i – 1]: is_palindrome = False # Переходим к следующему символу i = i + 1 # Вывод результата if is_palindrome: print(line, " – это палиндром") else: print(line, " – это не палиндром") Упражнение 77. Таблица умножения## # Вывести таблицу умножения от 1 до 10 # MIN = 1 MAX = 10
# Строка заголовков print(" ", end = "") for i in range(MIN, MAX + 1): print("%4d" % i, end = "") print() # Выводим таблицу for i in range(MIN, MAX + 1): print("%4d" % i, end = "") for j in range(MIN, MAX + 1): print("%4d" % (i * j), end = "") print() Упражнение 79. Наибольший общий делитель## # Рассчитаем наибольший общий делитель для двух целых чисел с использованием цикла # # Запрашиваем у пользователя два целых числа n = int(input("Введите первое целое число: ")) m = int(input("Введите второе целое число: ")) # Присваиваем d наименьшее из n и m d = min(n, m) # В цикле находим наибольший общий делитель для двух чисел while n % d != 0 or m % d != 0: d = d – 1 # Выводим результат print("Наибольший общий делитель для", n, "и", m, "равен", d) Упражнение 82. Десятичное число в двоичное## # Перевести десятичное число в двоичное # NEW_BASE = 2 # Запрашиваем число для перевода у пользователя num = int(input("Введите неотрицательное целое число: ")) # Будем сохранять результат в переменной result result = "" q = num Алгоритм, предложенный здесь, выражен при помощи цикла repeat-until (повторяйпока), но за неимением в Python такого типа циклов нам пришлось адаптировать алгоритм для работы с циклом while. Как пример, этого можно достигнуть путем дублирования тела цикла и размещения его непосредственно перед циклом. # Пишем копию тела цикла вне самого цикла r = q % NEW_BASE result = str(r) + result q = q // NEW_BASE # Выполняем цикл, пока q не станет равен нулю while q > 0: r = q % NEW_BASE result = str(r) + result q = q // NEW_BASE # Отображаем результат print(num, "в десятичной системе равно", result, "в двоичной.") |