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

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


Скачать 2.24 Mb.
НазваниеСборник упражнений Введение в язык Python с задачами и решениями Бен Стивенсон Москва, 2021 удк 004. 438Python
Анкоркнига заданий пайтон
Дата02.10.2022
Размер2.24 Mb.
Формат файлаdocx
Имя файлакнига практических заданий, pyton.docx
ТипСборник упражнений
#709959
страница64 из 69
1   ...   61   62   63   64   65   66   67   68   69

Упражнение 130. Унарные и бинарные операторы


##

# Устанавливаем разницу между унарными и бинарными операторами + и – # from token_list import tokenList

## Определяем появление унарных операторов + и – в списке лексем и

# меняем их на u+ и u– соответственно

# @param tokens – список лексем, который может содержать унарные операторы + и – # @return список лексем с заменой унарных операторов + и – на u+ и u– def identifyUnary(tokens): retval = []

# Обрабатываем каждую лексему в списке for i in range(len(tokens)): # Если первая лексема – это + или –, то это унарный оператор if i == 0 and (tokens[i] == "+" or tokens[i] == "–"):

retval.append("u" + tokens[i]) # Если это лексема + или –, а предыдущая лексема являлась # оператором или открывающей скобкой, то это унарный оператор elif i>0and (tokens[i] == "+" or tokens[i] == "–") and \ (tokens[i–1] == "+" or tokens[i–1] == "–" or tokens[i–1] == "*" or tokens[i–1] == "/" or tokens[i–1] == "("):

retval.append("u" + tokens[i]) # Любая другая лексема свидетельствует о том, что это бинарный оператор, # так что он добавляется к списку без изменений else: retval.append(tokens[i])

# Возвращаем новый список лексем с измененными унарными операторами return retval

# Демонстрируем выполнение пометки унарных операторов def main(): # Запрашиваем выражение у пользователя, разбиваем на лексемы и отображаем результат exp = input("Введите математическое выражение: ") tokens = tokenList(exp) print("Лексемы:", tokens) # Идентифицируем список унарных операторов marked = identifyUnary(tokens) print("С помеченными унарными операторами: ", marked)

# Вызываем основную функцию, только если программа не была импортирована как модуль if __name__ == "__main__": main()

Упражнение 134. Все подсписки заданного списка


##

# Находим все подсписки в заданном списке

#

## Создаем список из всех подсписков заданного списка

Список с пустым списком внутри обозначается как [[]].

# @param data – список, в котором выполняется поиск подсписков # @return список из всех подсписков исходного списка def allSublists(data): # Начинаем с добавления пустого списка sublists = [[]]

# Генерируем подсписки длиной от 1 до len(data) for length in range(1, len(data) + 1): # Генерируем подсписки начиная с каждого индекса for i in range(0, len(data) – length + 1): # Добавляем найденный подсписок к общему списку sublists.append(data[i : i + length])

# Возвращаем результат return sublists

# Демонстрируем работу функции allSublists def main():

print("Подсписки []: ")

print(allSublists([]))

print("Подсписки [1]: ") print(allSublists([1]))

print("Подсписки [1, 2]: ") print(allSublists([1, 2]))

print("Подсписки [1, 2, 3]: ") print(allSublists([1, 2, 3]))

print("Подсписки [1, 2, 3, 4]: ") print(allSublists([1, 2, 3, 4]))

# Вызов основной программы main()

Упражнение 135. Решето Эратосфена


##

# Определяем все простые числа от 2 до значения, введенного пользователем,

# при помощи алгоритма "Решето Эратосфена"

# # Запрашиваем у пользователя конечное значение limit = int(input("Вывести простые числа вплоть до какого значения? "))

# Создаем список для чисел от 0 до limit nums = [] for i in range(0, limit + 1): nums.append(i)

# "Вычеркиваем" единицу, заменяя ее на ноль nums[1] = 0

# Вычеркиваем числа, кратные всем найденным простым числам p = 2 while p < limit: # Вычеркиваем все числа, кратные p, но не его само for i in range(p * 2, limit + 1, p): nums[i] = 0

# Находим следующее "невычеркнутое" число p = p + 1 while p < limit and nums[p] == 0: p = p + 1

# Отображаем результат print("Простые числа вплоть до", limit, ":") for i in nums: if nums[i] != 0: print(i)


Глава 14 Словари

Упражнение 136. Поиск по значению


##

# Проводим поиск всех ключей в словаре по заданному значению

#

## Поиск в словаре по значению

# @param data – словарь для поиска

Каждый ключ в словаре должен быть уникальным. При этом значения могут повторяться. Таким образом, поиск в словаре по значению может привести к результату, содержащему от нуля до множества ключей.

# @param value – искомое значение # @return список (возможно, пустой) ключей, соответствующих искомому значению def reverseLookup(data, value): # Создаем список ключей для заданного значения keys = []

# Проверяем каждый ключ и добавляем в список, # если он соответствует искомому значению for key in data:

if data[key] == value: keys.append(key)

# Возвращаем список ключей return keys

# Демонстрируем работу reverseLookup def main(): # Словарь соответствий французских слов английским frEn = {"le" : "the", "la" : "the", "livre" : "book", \ "pomme" : "apple"}

# Показываем работу функции reverseLookup для трех случаев: # для множества ключей, одного ключа и отсутствия ключей print("Перевод английского слова 'the' на французский: ", \ reverseLookup(frEn, "the")) print("Ожидаемый результат: ['le', 'la']") print() print("Перевод английского слова 'apple' на французский: ", \ reverseLookup(frEn, "apple")) print("Ожидаемый результат: ['pomme']") print() print("Перевод английского слова 'asdf' на французский: ", \ reverseLookup(frEn, "asdf")) print("Ожидаемый результат: []")

# Вызываем основную функцию, только если файл не был импортирован в качестве модуля if __name__ == "__main__": main()
1   ...   61   62   63   64   65   66   67   68   69


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