Python 3.x 检查用户是否已经投票,即使他们没有';T
用户输入他们的userid,然后投票“是”或“否”,但代码返回true,即使用户没有投票,if语句也会执行 例如,执行userid=1和投票,userid=1和投票。第二次userid尝试投票时,它会说您已经投票了,但是如果您在第三次迭代中使用userid=2,它会说您已经投票了,这是不正确的Python 3.x 检查用户是否已经投票,即使他们没有';T,python-3.x,sqlite,voting,voting-system,Python 3.x,Sqlite,Voting,Voting System,用户输入他们的userid,然后投票“是”或“否”,但代码返回true,即使用户没有投票,if语句也会执行 例如,执行userid=1和投票,userid=1和投票。第二次userid尝试投票时,它会说您已经投票了,但是如果您在第三次迭代中使用userid=2,它会说您已经投票了,这是不正确的 import sqlite3 conn = sqlite3.connect(":memory:") cur = conn.cursor() with conn: cur.execute("CR
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())
没有错误消息,只是产生了错误的结果
其中投票=‘是’或‘否’
如果您不想重复提到投票
列,
然后将其表述为:
WHERE votes in ('yes', 'no')
正确格式化您的代码将使其更易于阅读…您应该查找
和以及或的优先级。。。为什么你只是把字符串“no”
放在那里?这总是会是错误的,因为当转换为一个数字时,它会变成0
。重点是什么?我试着把它改成使用数字1和2(而不是是和否),得到了同样的结果。谢谢。所以我假设在使用WHERE语句时,我不应该放置=变量或变量。我应该使用in语句,然后将变量放在括号内