Работа с ошибками типа, размер списка размером 1 || Проблема Муссона

#python #list #types

#python #Список #типы

Вопрос:

 def getUmbrellas(sizes,req):
    
    try:
        if list[0]==int():
         
    else:
        print("List must be 1D")
    for i in sizes[::-1]:
        if req % int(i)==0:
          return int(req/int(i))
    return -1
  

Это мое решение проблемы зонтика в python. Он принимает во ввод список зонтичных размеров и количество людей, необходимых для охвата в качестве int.

например ([2, 2, 2, 4], 4) вернет 1, потому что один зонт 4-го размера накроет всех 4 человек.

Я пытаюсь справиться с ошибками, которые возникают из-за того, что список превышает 1D, и с общими исключениями ошибок в python.

Может кто-нибудь помочь предложить способ, которым я мог бы реализовать проверку, если список больше 1D, а затем выйти из кода с сообщением «Список должен быть 1D»

Ответ №1:

Теперь я понял, что мое решение неверно. Не выполняется следующий тестовый пример:

 getUmbrellas([2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2],4)
  

Итак, мне нужно начать все сначала! Я думаю, что это разновидность проблемы с монетами.

Ответ №2:

Вы могли бы сделать это, проверив элементы списка или кортежа, переданные функции через assert:

 assert isinstance(sizes, (list, tuple)), "sizes should be of type list or tuple."
assert all(isinstance(elem, (int, float)) for elem in sizes), "sizes should be 1D."
  

или через raise:

 if not isinstance(sizes, (list, tuple)):
    raise TypeError("sizes should be of type list or tuple.")
if not all(isinstance(elem, (int, float)) for elem in sizes):
    raise TypeError("sizes should be 1D.)