1.Напишите функцию, которая вычисляет количество цифры «5» в введенном трёхзначном числе.
2.В файле записано в столбик 5 чисел и требуется найти их произведение.
Python

Ответы

Ответ дал: KnowsUser1
1

Ответ:

--- 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 Если вы тупо скопируете код, Интерпретатор может начать ругаться. Это вызвано тем, что наш любимый сайт подменяет табуляции и подряд идущие пробелы каким то своим дурацким символом, который не может переварить интерпретатор


tgajnyllin77: А есть возможность сделать задания по отдельности? И во втором задании нужно чтобы результат записан был в другой файл.
KnowsUser1: Возможность разделить решения есть, а про то, что во втором задании это нужно куда то записывать, вы в задании не указали
tgajnyllin77: Согласен, моя ошибка
tgajnyllin77: Если не трудно, не могли бы разделить решения,а так же второе задание изменить. Заранее Огромное спасибо!!!!!!
KnowsUser1: Изменил решение. Теперь для каждой задачи решение описано в теле функции с соответствующим именем. Для каждой функции-задачи чётко расписано, как завести её код в отдельном файле, если вам нужно
KnowsUser1: Так же сделал вывод результатов для второй задачи в файл
tgajnyllin77: Огромное спасибо!!! Очень сильно выручили)
KnowsUser1: Отдельная пытка на этом чудо-сайте редактировать решения.
KnowsUser1: В функции Dump() была ошибка, исправил только что. Обратите внимание
tgajnyllin77: Спасибо)))
Вас заинтересует