【发布时间】:2012-12-20 21:44:24
【问题描述】:
首先:你不必为我编写这个代码,除非你是一个超级棒的好人。但是由于你们都擅长编程并且比我和所有人都更好地理解它,所以它可能比逐段编写试图让我理解它更容易(因为它可能不是太多的代码行)。
所以 - 我需要制作一个高分列表,以便在新条目时自行更新。 就这样吧:
第一步 - 完成
我有玩家输入的输入,已作为数据进行一些计算:
import time
import datetime
print "Current time:", time1.strftime("%d.%m.%Y, %H:%M")
time1 = datetime.datetime.now()
a = raw_input("Enter weight: ")
b = raw_input("Enter height: ")
c = a/b
第二步——制作高分榜
在这里,我需要某种字典或可以读取先前条目并检查分数(c)是否(至少)优于“高分”中最后一个的分数,如果是,它会提示您输入您的姓名。
输入姓名后,它会将您的姓名、a、b、c 和时间发布在高分列表中。
这是我想出来的,它肯定行不通:
list = [("CPU", 200, 100, 2, time1)]
player = "CPU"
a = 200
b = 100
c = 2
time1 = "20.12.2012, 21:38"
list.append((player, a, b, c, time1))
list.sort()
import pickle
scores = open("scores", "w")
pickle.dump(list[-5:], scores)
scores.close()
scores = open("scores", "r")
oldscores = pickle.load(scores)
scores.close()
print oldscores()
我知道我做了一件非常愚蠢的事情,但无论如何,感谢您阅读本文,希望您能帮助我解决这个问题。 :-)
【问题讨论】:
-
您的代码完全乱序且重复。你不能用
time1创建list(顺便说一句,你不应该把它称为list是一个内置的),因为你直到5 行之后才初始化time1。而且由于您已经有了列表,因此明确地重新声明所有这些值只是为错误引入了一个向量;如果您需要分配给唯一标签的值,请解压缩list中的元组。您可能还想open并将旧的高分读入list,然后再添加和排序新的分数,否则您将践踏现有的分数列表。 -
标题说字典,但是这里没有字典。
-
我现在明白我应该说一个排序列表,而不是字典,我是一个新手初学者。所以我应该做一个 open("..." "r") 然后 open("..." "w") 一切都应该没问题?
标签: python list dictionary pickle