Модуль 7.4 (Docstring и аннотации). Docstring(documentation string) переводится как строка документирования. Это специальный механизм, который позволяет добавлять пояснения внутри вашего кода определенным образом и в определенном месте.
При помощи какой функции можно взглянуть на строку документации у функции input?
help(input)
help(input)
в атрибуте __doc__
Чему будет равен атрибут __doc__ у функции foo?
def foo():
"""Да вы только посмотри на эту функцию"""
"""Да она вообще"""
"""ничего не делает!!!"""
Да вы только посмотри на эту функцию
Чему будет равен атрибут __doc__ у функции foo?
def foo():
"""
Да вы только посмотри на эту функцию
Да она вообще
ничего не делает!!!
"""
Да вы только посмотри на эту функцию\nДа она вообще\nничего не делает!!!
Чему будет равен атрибут __doc__ у функции foo?
def foo():
a = 10
"""Да вы только посмотри на эту функцию"""
"""Да она вообще"""
"""просто в a сохраняет 10!!!"""
None
Ниже имеется готовая функция add_binary, которая принимает два числа и возвращает их сумму в двоичной системе счисления
Ваша задача только добавить докстроку «Возвращает сумму чисел a и b в двоичном виде»
def add_binary(a, b):
'Возвращает сумму чисел a и b в двоичном виде' #указываем описание функции
binary_sum = bin(a+b)[2:]
return binary_sum
Напишите функцию first_repeated_word , которая принимает строку, состоящую из нескольких слов, слова разделяются между собой пробелом. Функция должна вернуть первое повторяющееся слово и вернуть его в качестве результата. Если передана строка, в которой все слова различны, функция first_repeated_word должна вернуть None Регистр букв при сравнении нужно учитывать
first_repeated_word("ab ca bc ab") => "ab"
first_repeated_word("ab ca bc Ab cA aB bc") => "bc"
first_repeated_word("ab ca bc ca ab bc") => "ca"
first_repeated_word("ab ca bc") => None
Для функции first_repeated_word нужно добавить док-строку Находит первый дубль в строке
и не забудьте проаннотировать аргументы и возврат функции
Нужно написать только определение функции first_repeated_word
def first_repeated_word(text: str):
'Находит первый дубль в строке'
sp = [] # создаем пустой список для добавления слов, которые прошли
for i in text.split(): # разбиваем полученную строку и разбиваем на список и проходимся по нему
if i not in sp: # если этого слова нет ещё в нашем списке с прошедшими словами, то его добавляем
sp.append(i)
else: # иначе, если это слово уже есть в списке с прошедшими словами, то значит это слово - дубль, возвращаем это слово
return i
# если мы не встретили дублей, то возвратит None
Ниже проаннотирована словарем переменная person
from typing import Dict, Optional, Union
person: Dict[Optional[Union[str, int]], Optional[str]]
Какой тип данных может храниться в ключах этого словаря?
None
int
str
Напишите функцию shift_letter , которая принимает два аргумента:
letter одна английская буква в нижнем регистре
shift целое число — значение сдвига буквы (может быть как положительным, так и отрицательным)
Функция shift_letter сдвигает символ letter вперед или назад на заданное значение shift .Сдвиг может быть цикличным в пределах от a до z. Ниже примеры:
Не забудьте проаннотировать аргументы и также добавьте doc-строку «Функция сдвигает символ letter на shift позиций»
Функция shift_letter должна вернуть новый символ. Вот вам в помощь ascii коды английских буквы, вам нужны только символы в нижнем регистре
Нужно написать только определение функции shift_letter
def shift_letter(letter: str, shift: int) -> str: # объявляем функцию используя аннотации
'Функция сдвигает символ letter на shift позиций'
return chr((ord(letter) - 97 + shift) % 26 + 97) # возвращаем символ со сдвигом используя таблицу аски
На основании предыдущей задачи мы с вами можем реализовать знаменитый шифр Цезаря. Этот шифр брал каждую букву исходной фразы и смещал ее на значение ключа, это так раз был на сдвиг. В пределах кодирования одной фразы значение сдвига всегда постоянно.
И так, ваша задача создать функцию caesar_cipher , которая принимает на вход текст и значение сдвига.
Внутри функции caesar_cipher необходимо последовательно пройтись по каждому символу и преобразовать его по следующим правилам:
если символ является знаком пунктуации, оставляем его как есть
если это буква, то сместить ее при помощи ранее написанной функции shift_letter
Закодированный текст необходимо вернуть в качестве ответа. Вот пример работы
caesar_cipher('leave out all the rest', -1) => 'kdzud nts zkk sgd qdrs'
caesar_cipher('one more light', 3) => 'rqh pruh oljkw'
Аннотации, мой друг, не забываем прописывать. И еще нужно сделать док-строку для функции caesar_cipher со значением «Шифр цезаря»
Нужно написать только определение функций shift_letter и caesar_cipher
def shift_letter(letter: str, shift: int) -> str: # объявляем функцию используя аннотации
'Функция сдвигает символ letter на shift позиций'
return chr((ord(letter) - 97 + shift) % 26 + 97) # возвращаем символ со сдвигом используя таблицу аски
def caesar_cipher(letter: str, shift: int) -> str:
'Шифр цезаря'
a = '' # создаем пустую строку к которой мы будем прибавлять символы
for i in letter: # проходимся по строке
if i.isalpha(): # если это буква, то вызываем функцию shift_letter и к строке прибавляем символ со сдвигом
a += shift_letter(i, shift)
else: # если же это не буква, то её оставляем без изменения и так добавляем к строке
a += i
return a # возвращаем полученную зашифрованную строку
Если у вас не отображается решение последних задач, значит у вас включен блокировщик рекламы который вырезает эти ответы
Понравилась статья? Поделиться с друзьями:
Подписаться
2 комментариев
Новые
СтарыеПопулярные
Межтекстовые Отзывы
Посмотреть все комментарии
Дмитрий
10 месяцев назад
Похоже в модуле появилась новая задача https://stepik.org/lesson/296973/step/10?unit=278701. Ее решение: def get_word_indices(strings: list[str]) -> dict: «»»Функция возвращает словарь, где ключи — это уникальные слова из списка строк в нижнем регистре, а значения — это списки индексов строк, в которых эти слова встречаются «»» dct = {j: 0 for i in strings for j in i.lower().split()}
for i in dct: z = [] for j in range(len(strings)): if i in strings[j].lower(): z.append(j) dct[i] = (z) return dct
Похоже в модуле появилась новая задача https://stepik.org/lesson/296973/step/10?unit=278701.
Ее решение:
def get_word_indices(strings: list[str]) -> dict:
«»»Функция возвращает словарь, где ключи — это уникальные слова из
списка строк в нижнем регистре, а значения —
это списки индексов строк, в которых эти слова встречаются «»»
dct = {j: 0 for i in strings for j in i.lower().split()}
for i in dct:
z = []
for j in range(len(strings)):
if i in strings[j].lower():
z.append(j)
dct[i] = (z)
return dct
Спасибо, опубликовал ваше решение