СРОЧНО! PYTHON!! ДАМ 85 БАЛЛОВ! Найди самого большого. Пользователь вводит...

+751 голосов
2.9m просмотров

СРОЧНО! PYTHON!! ДАМ 85 БАЛЛОВ! Найди самого большого. Пользователь вводит последовательность целых чисел (каждое число на новой строке). Если пользователь вводит 0, то последовательность заканчивается. Напишите программу, которая будет считать индекс (порядковый номер) самого большого числа. Подсказка: первое введенное число сначала является самым большим. Потом ситуация может поменяться. Мы принимаем новые числа ПОКА новое число не равно нулю. ТОЛЬКО НЕЛЬЗЯ ИСПОЛЬЗОВАТЬ MAX, MIN, ABEND


Информатика (27 баллов) | 2.9m просмотров
+188

Порядковый номер

+46

так индекс максимума, или всё таки порядковый номер?

Дан 1 ответ
+80 голосов

Ответ:

--- 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

from math import inf

#DEFINE User-Types

Primitive = typing.TypeVar('Primitive', int, float, complex, str, bytes, bytearray)

#END

def ReadSeqWhile(predicate: Callable[[int], bool], SeqType: Primitive = int):

   '''

   Возвращает последовательность элементов в указанном типе, считываемых с клавиатуры, пока ввод удовлетворяет условию

   '''

   temp = SeqType(input())

   while predicate(temp):

       yield temp

       temp = SeqType(input())

def IndexMax(Array: List[Any]) -> int:

   '''

   Возвращает индекс первого максимума для list

   '''

   _max = -inf

   _maxind = 0

   for index, item in enumerate(Array):

       if item > _max:  

           _max = item  

           _maxind = index

   return _maxind

def main():

   RawData = ReadSeqWhile(lambda p: p != 0)

   print(IndexMax(RawData)+1)

       

if __name__ == "__main__":

   main()

(1.6k баллов)