Возможно в вопросе не имелось в виду буквально "set" как класс, а просто вернуть уникальную последовательность, в данном случае и возвращаем ее, класса list.
Если же нужен был возврат именно класса set, то теряется смысл запрета использования set() и не нужна будет проверка (elem not in r), если мы по факту будем использовать реальный set, только не напрямую.
Хочу через цикл for по длине массива (text) прибавлять по +1 к каждой переменной (wow)
Откуда вообще такая задача возникла? Для чего потребовались такие манипуляции? Выглядит так, что пытаетесь сделать какие-то ненужные костыли. Элементы в списке итак можно выбирать по порядку.
leroy bit, sql-инъекции делаются при помощи пользовательского ввода. Если у Вас названия таблиц и полей зависят от того, что ввел пользователь, то действительно неправильный дизайн. Пользователь должен влиять только на сами данные.
proxor2001, может запускаете в интерпретаторе Python 2 а не 3.
Что за интерпретатор, киньте ссылку на этот свой repl.
По коду: зачем заново запрашиваете ввод пользователя, число же единственное. Во-вторых, в цикле число должно изменяться, иначе условие никогда не станет ложным и цикл не закончится.
Не касается основного вопроса по ошибке, но в целом в решении подход не правильный. Используйте разные переменные для разных целей. Вы берете заданное число в переменную x, а затем её же переопределяете в цикле. У вас получится совсем не то, что нужно.
Когда нужно что-то перебрать, проще использовать цикл for for i in range(x):
будет перебирать в переменную i все числа в диапазоне от 0 до x
Более того, можно использовать и другие параметры, в результате чего сразу перескакивать через 2 значения for i in range(2,x,2):
Александр, судя по тому, что ошибку выдает, в таблице нет этого поля id. Видимо таблицу создавали ранее БЕЗ этого поля. Поэтому запуск "CREATE TABLE IF NOT EXISTS users" не дает ничего (он не отрабатывает, если таблица уже есть в базе).
Откройте свою базу сторонним редактором, например SQLiteStudio и посмотрите, какие поля есть у таблицы. Там же можете ее и удалить, чтобы скрипт создал нужную.
newbie63, я же для этого и написал про join с '\n'
cur.execute("SELECT * FROM users ORDER BY money DESC LIMIT 5")
data = cur.fetchall()
text = '\n'.join(f'{row[1]}: {row[5]} - монет' for row in data)
await message.reply(text)
как объявить это словарь глобальным, что бы обновлять, вызывать и просматривать его из любой функции и за их приделам?
Для изменения значений самого словаря не требуется объявлять его глобальным (global), они итак будут меняться. Если не меняются, проблема в чем-то еще, приведите свой код.
Дмитрий, это все конечно замечательно, но речь не про такие случаи. У автора в данном случае нужно именно значение, а не передача класса.
Если все еще остаются вопросы, можете глянуть предыдущий вопрос автора, сразу станет очевидно.
Т.е.
или если даже set() нельзя, то какие-нибудь костыли
Но с точки зрения алгоритмов такая постановка выглядит странной тогда.