<p>要显示最后3个分数,您必须将分数保存在文件中,然后再读取它们</p>
<p>我会像这样将数据作为字典保存在JSON文件中</p>
<p><strong>users.json</strong></p>
<pre><code>{
"Scott": {
"password": "heyall",
"scores": []
},
"alexander": {
"password": "heyall",
"scores": []
},
"Lisa1": {
"password": "heyall",
"scores": []
}
}
</code></pre>
<p>顺便说一句:类似的方式,我会把问题保存在JSON文件中</p>
<p><strong>data.json</strong></p>
<pre><code>[
{
"question": "True or False? CPU stands for Central Processing Unit?",
"answer": "True"
},
{
"question": "True or False? On average magnetic tape is more expensive than an Optical disk.",
"answer": "False"
},
{
"question": "True or False? A Binary Search looks for items in an ordered list.",
"answer": "True"
},
{
"question": "True or False? Extended ASCII covers all major languages.",
"answer": "False"
},
{
"question": "True or False? Procedures always must take parameters.",
"answer": "False"
},
{
"question": "True or False? In flow charts input/output is represented in a diamond.",
"answer": "False"
},
{
"question": "True or False? The world's largest WAN is the cloud.",
"answer": "False"
},
{
"question": "True or False? POP3 is used to retrieve emails from a server.",
"answer": "True"
},
{
"question": "True or False? In hexidecimal the binary number 01001110 equals 4E.",
"answer": "False"
},
{
"question": "True or False? An interpreter is only required once to run the program.",
"answer": "False"
}
]
</code></pre>
<p>然后我就可以开始读了</p>
<pre><code>with open('users.json') as fh:
all_users = json.load(fh)
with open('data.json') as fh:
data = json.load(fh)
</code></pre>
<p>测验后更新</p>
<pre><code>all_users[username]['scores'].append(score)
</code></pre>
<p>并保存它</p>
<pre><code>with open('users.json', 'w') as fh:
json.dump(all_users, fh)
</code></pre>
<p>然后我可以使用<code>[-3:]</code>显示最后的3个分数(或更多)</p>
<pre><code>print('Three last scores:', all_users[username]['scores'][-3:])
</code></pre>
<hr/>
<p>完整代码(包括其他更改)</p>
<p>我使用<code>random.shuffle(data)</code>来改变数据的顺序,然后我可以使用普通的<code>for</code>-循环,代码更简单</p>
<pre><code>import sys
import random
import json
# read data
with open('users.json') as fh:
all_users = json.load(fh)
with open('data.json') as fh:
data = json.load(fh)
# login
username = input("Login: ")
password = input("Password: ")
if username not in all_users.keys():
print("Username not found")
sys.exit("Username incorrect!")
if password != all_users[username]['password']:
print("Password incorrect!")
sys.exit("Password incorrect")
# change questions order
random.shuffle(data)
# ask questions
score = 0
for item in data:
question = item['question']
answer = item['answer']
user_answer = input(question)
if user_answer == answer:
print("Correct!")
score += 1
else:
print("Incorrect!")
# keep new score
all_users[username]['scores'].append(score)
# display result
if 10 >= score >= 8:
print("Well done sport! You got", score ,"I'm so proud of you!")
elif score == 7:
print("Good job you got", score ,"! It's not so bad! I'm proud!")
elif 6 >= score >= 1:
print("Try again. You only got", score,"/10")
elif score == 0:
print("You're a disgrace! You only got", score,"/10!!!")
print('Three last scores:', all_users[username]['scores'][-3:])
# save it
with open('users.json', 'w') as fh:
json.dump(all_users, fh)
</code></pre>