我用Python创建了一个测验游戏,它还包含一个登录和注册程序,但是我试图添加一个计分系统。
目前,我已将CSV文件设置如下:
username,password,score
创建帐户时,分数设置为0,并在您使用以下方式登录时加载:
for row in users:
if username == row[0]:
currentScore = row[2]
currentScore = int((currentScore))
这会从CSV文件中获取用户的高分。 但是,当游戏结束时,我可以使用此设置来确定其新分数是否高于旧分数:
if int(score) > int(currentScore):
currentscore = score
然后我需要它来打开数据库,找到正在玩的用户,并用新的分数更新那里的分数。我该怎么做?我试图让csv编辑特定的行,但是它似乎不起作用。
完整代码可在此处找到:https://pastebin.com/q07qazJA
答案 0 :(得分:1)
TL; DR
if int(score) > int(currentScore):
currentscore = score
r = csv.reader(open('users.csv'))
lines = list(r)
for n, line in enumerate(lines):
if [username, password] == list(line):
break
lines[n] = username, password, score
writer = csv.writer(open('users.csv', 'w'))
writer.writerows(lines)
quiz = False
说明:编辑行将需要分两步进行,因为读写文件的同一行不切实际,因此首先打开csv
文件,然后将数据保存到列表,编辑列表,然后再次打开文件 将编辑后的列表写回到csv
。