Пустая последовательность в питоне
Ошибка:
File "telegrambot.py", line 50, in send_message
generate(message)
File "telegrambot.py", line 155, in generate
password += random.choice(uppercase_list + lowercase_list + digits_list + ''
.join(symbols_list))
File "C:\Users\Admin\AppData\Local\Programs\Python\Python38-32\lib\random.py",
line 290, in choice
raise IndexError('Cannot choose from an empty sequence') from None
IndexError: Cannot choose from an empty sequence
C:\Users\Admin\Desktop>
Код (не полностью):
for x in range(length):
password += random.choice(uppercase_list + lowercase_list + digits_list + ''.join(symbols_list))
bot.send_message(message.chat.id, '`{0}`' .format(password), parse_mode="markdown")
Пытался исправить следующими кодами, но попытки не оказались удачными.
password += random.choice(''.join(uppercase_list) + ''.join(lowercase_list) + ''.join(digits_list) + ''.join(symbols_list))
global symbols_list
symbols_list = config.sl ( sl = ['!', '@', '#', '$', '%', '^', '&', '?', '*', '(', ')', '{', '}', '~'] )
password += random.choice(''.join(uppercase_list) + ''.join(lowercase_list) + ''.join(digits_list) + ''.join(symbols_list))
Есть решение этой ошибки?
Ответы (2 шт):
Автор решения: Zhihar
→ Ссылка
random.choice(uppercase_list + lowercase_list + digits_list + ''.join(symbols_list))
вот это ''.join(symbols_list) - строка, а uppercase_list, lowercase_list, digits_list - список символов?
тогда как вы строку со списком складываете?
Автор решения: Максим
→ Ссылка
Причиной этой ошибки был вот этот код:
if use_symbols == 'да':
symbols_list = config.sl
else:
symbols_list = ''
На всех остальных проверках было .lower()
if use_uppercase.lower() == 'да':
uppercase_list = string.ascii_uppercase
else:
uppercase_list = ''
if use_lowercase.lower() == 'да':
lowercase_list = string.ascii_lowercase
else:
lowercase_list = ''
if use_digits.lower() == 'да':
digits_list = string.digits
else:
digits_list = ''
if use_symbols == 'да': <---------- здесь дописал .lower()
symbols_list = config.sl
else:
symbols_list = ''
Также, необходимо, чтобы в
random.choice(uppercase_list + lowercase_list + digits_list + ''.join(symbols_list))
было ''.join(), потому что symbols_list это список.