DDddd532222
14.08.2022 23:00

Определите, какие информацмонные процессы описаны в следующих примерах


Определите, какие информацмонные процессы описаны в следующих примерах

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
Uchenicza
05.04.2020 22:19

1: Объект set не реализует __getitem__, соответственно, доступ к элементам set по индексу невозможен. Приведите set к list для получения доступа к элементу по индексу

2: Функция elem не осуществляет проверку правильности вводимых данных, в следствии чего неверные параметры при вызове функции elem могут поднять исключение IndexError: string/list index out of range.

Пояснения:

Используйте Type Hints для указания принимаемого и возвращаемого типа для функции, а так же добавьте проверку получаемых функцией параметров:

import typing

from typing import List

from typing import Any

def elem(data: List[Any], index: int) -> bool :

   try:

      print(data[index]); return True

   except: return False

elem(list(set('string')), 3)

В предложенном примере кода функция возвращает True или False. в зависимости от результата выполнения. Вы можете добавить декоратор, который будет выводить в консоль сообщение об ошибке вызова без прерывания выполнения программы:

import typing

from typing import List

from typing import Any

from typing import Callable

def Status(func: Callable[[Any], bool]):

   def _wrap(*a, **kw):

       res = func(*a, **kw)

       if not res:

           print('error occurred during call function')

   return _wrap

@Status

def elem(data: List[Any], index: int) -> bool :

   try:

      print(data[index]); return True  

   except: return False

elem(list(set('string')), 3) # -> 'r'

elem(list(set('string')), 32) # -> 'Error occurred during call function'

   

Все примеры кода написаны для языка Python 3.8.3

0,0(0 оценок)
Ответ:
kirana05
09.01.2023 14:32
1. Современное, короткое и быстрое решение

// PascalABC.NET 3.2, сборка 1417 от 28.03.2017
// Внимание! Если программа не работает, обновите версию!

begin
  var a:=ArrRandom(16,-20,80); a.Println;
  Writeln('S=',a.Where((x,i)->i.IsOdd).Sum)
end.

Пример
61 64 70 22 76 22 18 44 36 53 29 -9 42 -19 66 34
S=211

2. А вот так все еще учат в большинстве школ (стиль образца 70-80х годов века)

const
  n=16;
var
  i,s:integer;
  a:array[1..n] of integer;
begin
  Randomize;
  s:=0;
  for i:=1 to n do begin
    a[i]:=Random(101)-20;
    Write(a[i],' ');
    if i mod 2=0 then s:=s+a[i]
    end;
  Writeln;
  Writeln('S=',s)
end.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота