#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.)