用户分数保存程序
我正在尝试制作一个程序,它将询问用户名,然后提出一系列问题。每次问题正确时都加一个点。我正在尝试使其将分数和用户名一起存储到文本文件中,以便在文本文件中看起来像这样:
Name Score
因此,以约翰为例,如果他要获得4分,它将在文本文件中写为:
John 4
但是我想要这样,如果约翰要再次参加考试而不是两次让约翰参加:
John 4
John 6
我希望它读为:
John 4 6
与其重写名称和分数,不如写出tab,然后将分数与名称为John in的那一行写在同一行。
到目前为止,这是我的代码:
import random
name = input("Hello user, what is your name?")
count = (0)
score = (0)
while count != (8):
count = count + (1)
symbols = ['+', '-', '*']
valueF = random.randint(1,10)
valueS = random.randint(1,10)
chosensymb = random.choice (symbols)
question = input("What is %d %s %d ? :"%(valueF, chosensymb, valueS))
answer = eval(str(valueF) + chosensymb + str(valueS))
if question == str(answer):
score = score + (1)
print ("Correct")
else:
print ("Incorrect")
print("%s, you have scored %d points"%(name,score))
filewrite = open("ScoreSheet.txt","a")
filewrite.write("\n%s\t%d"%(name,score))
filewrite.close()
我不知道该怎么做,我是python的新手,对不起,如果我犯了任何错误,谢谢!
-
好吧,首先,您可以将每个人的分数存储在字典中。让我们介绍一个
scores
对象:scores = {}
它将名称作为键,将分数作为值。像那样:
scores = {'John': 2, 'Mary': 5}
如果您引入了新玩家,我们将在上述字典中创建一个新元素,我们将其命名为
'John'
,并带有一个得分0
:scores['John'] = 0
然后,如果玩家猜对了,我们将增加玩家的得分:
scores['John'] += 1
(
+=
如果您只想向对象添加一些内容,则可以使用运算符。这是一种简短的说法scores['John'] = scores['John'] + 1
。然后魔术开始了!
Python中有一个名为的内置模块pickle
,该模块可以将对象(如我们制作的字典-
scores
)存储在文件中,然后将它们从文件中弹出,然后将它们还原!有一个快速手动如何一起工作
pickle
。简而言之,您可以将分数保存到文件中,如下所示:import pickle pickle.dump(scores, open("scores.p", "wb"))
然后像这样加载它:
scores = pickle.load(open("scores.p", "rb"))