using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
namespace CSLear
{
partial class Program
{
static void Main(string[] args)
{
Student Лёха = new Student("Свотин", "Алексей", 21, "ПИ 2-3", new int[5] { 4, 5, 3, 5, 3, });
Лёха.GetInfo();
Console.WriteLine($"Отдельно выведенные оценки Лёхи: {Лёха.AverageMark}");
Console.ReadKey();
}
}
class Student
{
public string Surname { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public string Group { get; set; }
public int[] Marks { get; set; }
public double AverageMark => Marks.Average();
public Student(string Surname, string Name, int Age, string Group, int[] MarkList)
{
this.Surname = Surname;
this.Name = Name;
this.Age = Age;
this.Group = Group;
Marks = MarkList;
}
public void GetInfo()
{
Console.WriteLine($"Студент: {Surname} {Name}\nГруппа: {Group}\nСредний : {AverageMark}");
}
}
}
Объяснение:
Да, в VS 2019 можно использовать кириллицу для наименования переменных.
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
Поделитесь своими знаниями, ответьте на вопрос: