Пользователь вводит свой идентификатор пользователя и затем голосует «да» или «нет», но код возвращает значение «истина», и оператор if выполняется, даже если пользователь еще не проголосовал.
Например - выполнение идентификатора пользователя= 1 и голосование, ID пользователя = 1 и голосование.Во второй раз, когда userid пытается проголосовать, он говорит, что вы уже проголосовали, но если вы затем используете userid = 2 для третьей итерации, он говорит, что вы уже проголосовали, что не соответствует действительности.
import sqlite3
conn = sqlite3.connect(":memory:")
cur = conn.cursor()
with conn:
cur.execute("CREATE TABLE users(votes, userid INTEGER)")
for i in range(3):
userid = input("Enter your user id: ")
votes = input("Vote yes or no: ")
with conn:
cur.execute("SELECT * FROM users WHERE votes = 'yes' OR 'no' AND userid = ?", (userid,))
user_voted = cur.fetchall()
if user_voted:
print("You have already voted")
else:
cur.execute("INSERT into users(userid, votes) VALUES(?, ?)", (userid, votes))
print(cur.fetchall())
with conn:
cur.execute("SELECT * FROM users")
print(cur.fetchall())
Нет сообщений об ошибках, просто выдает неправильный результат