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

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


Скачать 2.24 Mb.
НазваниеСборник упражнений Введение в язык Python с задачами и решениями Бен Стивенсон Москва, 2021 удк 004. 438Python
Анкоркнига заданий пайтон
Дата02.10.2022
Размер2.24 Mb.
Формат файлаdocx
Имя файлакнига практических заданий, pyton.docx
ТипСборник упражнений
#709959
страница56 из 69
1   ...   52   53   54   55   56   57   58   59   ...   69

Упражнение 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 = “” позволяет избежать принудительного перевода строки.

# Строка заголовков 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, "в двоичной.")
1   ...   52   53   54   55   56   57   58   59   ...   69


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