#python
#python
Вопрос:
У меня есть строка от пользователя. Он должен содержать запятую, чтобы разделить ее и присвоить переменным. Но что, если пользователь пропустит запятую? Конечно, я могу проверить длину разделенной строки в ветвях if-else, но, возможно, есть другой способ, я имею в виду, что присвоение во время списка имеет значения. Например
a, b, c, d, e = list(range(3)) # 'a' and 'b' are None or not exists
Комментарии:
1. пожалуйста, вставьте строку и ожидаемый результат
2. Почему именно вы хотите поместить значения в отдельные переменные? Почему бы просто не использовать список?
3. В этом примере требуется ли пользователю иметь ровно 5 значений, разделенных запятыми? Если это так, вы можете перехватить поднятый
ValueError
и предложить пользователю повторить попытку.
Ответ №1:
Вы могли бы сделать что-то вроде этого:
>>> alist=list(range(3))
>>> alist
[0, 1, 2]
>>> a,b,c,*d=alist
>>> a,b,c
(0, 1, 2)
>>> d
[]
Если элементов больше нет, d
это пустой список. Он использует оператор распаковки *
. Не лучшее возможное решение для больших списков, поэтому я бы все равно определил для этого функцию. Для небольших случаев это работает хорошо. (Вы могли бы предположить d==[]
, что в нем больше нет элементов alist
) Например, вы могли бы добавить:
return False if not d else return True
Ответ №2:
Вы можете расширить список значениями None перед извлечением.
li = list(range(3))
expected_size = 5
missing_size = expected_size - len(li)
none_li = [None] * missing_size
new_li = li none_li
a, b, c, d, e = new_li