def hint1(*args):
return any(args)
any
функция принимает итератор, и возвращает True
, если любой элемент, это правда.
Проблема в том, что any
принимает итерируемый, а не кучу отдельных значений.
Это то, что для *args
для. Он принимает все ваши аргументы и объединяет их в кортеж, который загружается в ваш единственный параметр. Затем вы можете передать этот кортеж в any
как ваш итерируемый. См. Arbitrary Argument Lists в руководстве для более подробной информации.
Как Элазар указывает, это не работает ровно 4 аргументов, он работает для любого количество аргументов (даже 0). Будет ли это лучше или хуже, зависит от вашего варианта использования.
Если вы хотите, чтобы получить ошибку на 3 аргументы или 5, вы могли бы, конечно, добавить явное испытание:
if len(args) != 4:
raise TypeError("The number of arguments thou shalt count is "
"four, no more, no less. Four shall be the "
"number thou shalt count, and the number of "
"the counting shall be four. Five shalt thou "
"not count, nor either count thou three, "
"excepting that thou then proceed to four. Six "
"is right out.")
Но на самом деле, это гораздо проще использовать статический список аргументов для этого случая.
'def hint1 (* args): return any (args)' – abarnert
Серьезно, какие учебные материалы вы предоставили? Это основной вопрос, и ваши учебные материалы должны содержать ответы, которые вам нужны. – Marcin