ValueError: invalid literal for int() with base 10

Возникает одна ошибка в моём огроменном коде, этот код я предоставлять не буду, но предоставлю ту же ситуацию. Помогите разобраться с проблемой, пожалуйста.

Вот код:

import random
a = ["w", "a"]
b = str(range(len(a)))
c = random.randint(0, int(b))
print(c)

Вот ошибка:

c = random.randint(0, int(b))
ValueError: invalid literal for int() with base 10: 'range(0, 2)'        

Как мне всё же конвертировать это число range в int?


Ответы (1 шт):

Автор решения: KoVadim

Вот так работает

import random

a = ["w", "a"]
c = random.randint(0, len(a))
print(c)

я не знаю, что хотелось сделать вот этой строкой b = str(range(len(a)))

получить строковое представление для диапазона? ок, для вывода это нормально. Вот только randint вторым параметром ожидает число, а не строку и ругается.

Но если хочется это случайное число использовать для получения случайного символа с массива, тогда нужно не забыть вычесть единицу

c = random.randint(0, len(a)-1)

или посмотреть внимательно и найти функцию choice, которая сразу выбирает случайный элемент

a = ["w", "a"]
print(random.choice(a))
→ Ссылка