@nikto_211

В чем проблема random.uniform?

connection = sqlite3.connect('db.db')
cursor = connection.cursor()
time_range = cursor.execute('SELECT time_range FROM channel WHERE name=?', ('ss',)).fetchone()[0]
print(time_range)
random.uniform(*time_range)

Ошибка:
random.uniform(*time_range)
TypeError: Random.uniform() takes 3 positional arguments but 13 were given

Выводит через принт: 43200, 50400
Как исправить ошибку?
Если я задаю через переменную a = 43200, 50400 - Работает, а если использую sqlite - нет
  • Вопрос задан
  • 173 просмотра
Пригласить эксперта
Ответы на вопрос 2
fenrir1121
@fenrir1121
Начни с документации
В принт тоже вставьте распаковку и увидите.
А если не увидите принтаните тип переменной time_range
Ответ написан
Maksim_64
@Maksim_64
Data Analyst
При распаковке time_range у тебя 12 элементов а должно быть два. По всей видимости вот это 43200, 50400 это массив строк, а не два числа в массиве. Вот он тебе и распаковывает их в uniform("4","3","2"..,"0"). А должен распаковывать, в виде uniform(43200,50400). time_range приходит не в том виде в котором ты его ожидаешь.

Пишет он takes 3 потому что он еще и self считает. И пишет он 13 по факту в time_range у тебя 12 их также self учитывает. Так и выходит 43200, 50400 - 10 цифр + 1 запятая + пробел = 12 + self = 13 элементов.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
16 мая 2024, в 23:36
200000 руб./за проект
16 мая 2024, в 23:10
12000 руб./за проект