1.Напишите функцию, которая вычисляет количество цифры «5» в введенном трёхзначном числе.
2.В файле записано в столбик 5 чисел и требуется найти их произведение.
Python
Ответы
Ответ:
--- Python 3.8.3 ---
#Не удаляйте импорты
import typing
from typing import Callable
from typing import AnyStr
from typing import Any
from typing import Iterable
from typing import List
#DEFINING USER TYPES
Numeric = typing.TypeVar('Numeric', int, float, complex)
#ENDDEF
#Решение задания 1
def StringCount(RawString: AnyStr, Selector: Callable[[AnyStr], bool], splitter: AnyStr = None) -> int:
counter = 0
if splitter:
ToAnalyse = RawString.split(splitter)
else:
ToAnalyse = list(RawString)
for item in ToAnalyse:
if Selector(item): counter += 1
return counter
#Вспомогательная функция для решения задания 2. Возвращает считанные из файла данные
def LoadDataFromFile(fname:AnyStr, encoding:AnyStr):
with open(fname, 'r', encoding=encoding) as f:
rawData = f.read()
return rawData
def Product(data: Iterable[Numeric]):
#Перемножает все значения в переданной последовательности.
#Последовательность НЕ МОЖЕТ содержать какие либо элементы, кроме чисел
p = 1
for i in data: p *= i
return p
def Dump(fname: AnyStr, data: AnyStr, encoding: AnyStr):
with open(fname, 'w', encoding=encoding) as f:
f.write(str(data))
def Task1():
'''
Использует фукнцию StringCount(RawString: AnyStr, Selector: Callable[[AnyStr], bool], splitter: AnyStr = None)
При помещении в отдельный файл функции Task2, в этот же файл необходимо поместить фукнцию StringCount(), а так же выполнить следующие импорты:
import typing
from typing import Any
from typing import AnyStr
from typing import Callable
При помещении в отельный файл код из функции Task1() можно поместить в глобальную область.
'''
RawNum = input()
fives = StringCount(RawNum, lambda s: s == '5')
print(f'"5" count: {fives}')
def Task2():
'''
Использует функции:
LoadDataFromFile(fname:AnyStr, encoding:AnyStr)
Dump(fname: AnyStr, data: AnyStr, encoding: AnyStr)
При помещении функции Task2 в отдельный файл,
в этот же файл необходимо поместить функцию LoadDataFromFile(), Функцию Dump(),
а так же выполнить следующие импорты:
import typing
from typing import Any
from typing import AnyStr
from typing import Iterable
а так же сразу после импортов добавить следующую строку:
Numeric = typing.TypeVar('Numeric', int, float, complex)
при помещении в отдельный файл код из функции Task2() можно поместить в глобальную область.
'''
Numbers = [int(i) for i in LoadDataFromFile('input.txt', 'utf-8').split('\n')]
Dump('Output.txt', Product(Numbers), 'utf-8')
P.S Не советую что то менять, если вы плохо разбираетесь. Решение представляет собой цельную программу, которая выполняет оба задания сразу.
P.S 2 Код работает для интерпретатора Python 3.5 и выше
P.S 3 Код протестирован
P.S 4 Файл, в котором лежат входные данные для задачи 2, должен называться input.txt и лежать в одной директории с файлом программы
P.S 5 Если вы тупо скопируете код, Интерпретатор может начать ругаться. Это вызвано тем, что наш любимый сайт подменяет табуляции и подряд идущие пробелы каким то своим дурацким символом, который не может переварить интерпретатор