Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Python创建和保存战舰游戏的文本文件_Python - Fatal编程技术网

用Python创建和保存战舰游戏的文本文件

用Python创建和保存战舰游戏的文本文件,python,Python,我已经在同一个战舰游戏上工作了很长一段时间,现在已经到了最后阶段。现在我需要让游戏使用def saveScore函数将前五名分数保存在文本文件中。然后,我需要它读取我刚刚创建的文件,并使用try和except将分数加载到Python代码中,而不是file open和close。我不知道如何让Python识别我的可变分数,因为我相信它只是局部的。这是我的。我不知道怎么用泡菜 def main(): board=createBoard() printBoard(board)

我已经在同一个战舰游戏上工作了很长一段时间,现在已经到了最后阶段。现在我需要让游戏使用def saveScore函数将前五名分数保存在文本文件中。然后,我需要它读取我刚刚创建的文件,并使用try和except将分数加载到Python代码中,而不是file open和close。我不知道如何让Python识别我的可变分数,因为我相信它只是局部的。这是我的。我不知道怎么用泡菜

def main():
    board=createBoard()
    printBoard(board)
    s = [[21,22,23,24,25],
    [45,55,65,75],
    [1,2,3],
    [85,86,87],
    [5,15],
    [46,56]]
    playBattleship(s,board)
main()

也许最简单的方法就是用泡菜。使用加载和转储功能,您可以轻松保存/加载分数对象


也许最简单的方法就是用泡菜。使用加载和转储功能,您可以轻松保存/加载分数对象


使用pickle是将python对象序列化为文件,然后再次将格式读回对象的较低级别方法。如果您想要一个更高级的界面,让您更容易自然地使用,请尝试查看搁置模块:

你可以像对待字典一样对待它,只需附加和保存你的分数。它将通过在引擎盖下酸洗保存到文件中

import shelve

# open a shelve file. writeback=True makes it save
# on the fly
d = shelve.open('temp.file', writeback=True)
if not d.has_key('scores'):
    d['scores'] = []

print d['scores']
# []

# add some score values
d['scores'].append(10)
d['scores'].append(20)
d.close()

# next time, open the file again. It will have
# the 'scores' key. Though you should probably check
# for it each time in case its a first run.
d = shelve.open('temp.file', writeback=True)
print d['scores']
#[10, 20]

# sort the list backwards and take the first 5 top scores
topScores = sorted(d['scores'], reverse=True)[:5]

使用pickle是将python对象序列化为文件,然后再次将格式读回对象的较低级别方法。如果您想要一个更高级的界面,让您更容易自然地使用,请尝试查看搁置模块:

你可以像对待字典一样对待它,只需附加和保存你的分数。它将通过在引擎盖下酸洗保存到文件中

import shelve

# open a shelve file. writeback=True makes it save
# on the fly
d = shelve.open('temp.file', writeback=True)
if not d.has_key('scores'):
    d['scores'] = []

print d['scores']
# []

# add some score values
d['scores'].append(10)
d['scores'].append(20)
d.close()

# next time, open the file again. It will have
# the 'scores' key. Though you should probably check
# for it each time in case its a first run.
d = shelve.open('temp.file', writeback=True)
print d['scores']
#[10, 20]

# sort the list backwards and take the first 5 top scores
topScores = sorted(d['scores'], reverse=True)[:5]

在Python中读取和写入文件是:


<>如果你想存储比最后一个分数更多的数据,你可以考虑创建一个SqLITE3数据库。Python对SQLite3有很好的支持。这是一个跨平台的文件系统数据库。数据库只是磁盘上的一个常规文本文件,但它支持数据库中的许多SQL操作。

用Python读取和写入文件是:



<>如果你想存储比最后一个分数更多的数据,你可以考虑创建一个SqLITE3数据库。Python对SQLite3有很好的支持。这是一个跨平台的文件系统数据库。数据库只是磁盘上的一个常规文本文件,但它支持许多您期望从数据库中执行的SQL操作。

这段代码对我来说太高级了,我不确定它是如何工作的。让我发布我刚刚修复的内容。您只需将import语句放在python文件的顶部,在def createBoard上面,然后用我发布的替换您的saveScore您可能需要扩展此示例以说明多个分数。OPs分数是整数。这只会保存一个整数。也许向OP演示如何保存和调用列表?唯一的问题是我必须使用try和except,因此我无法使用此代码。你能看看我发布的内容,看看你是否能理解它吗?@user1329880:为什么你对所有的答案都发表评论,暗示代码不可用,因为你必须使用try-except?你应该在你的问题中解释为什么你要把这整件事包装在一个覆盖所有异常块中。这段代码对我来说太高级了。我不确定它是如何工作的。让我发布我刚刚修复的内容。你应该把import语句放在python文件的顶部,在def createBoard上面,然后用我发布的替换您的saveScore您可能需要扩展此示例以说明多个分数。OPs分数是整数。这只会保存一个整数。也许向OP演示如何保存和调用列表?唯一的问题是我必须使用try和except,因此我无法使用此代码。你能看看我发布的内容,看看你是否能理解它吗?@user1329880:为什么你对所有的答案都发表评论,暗示代码不可用,因为你必须使用try-except?你应该在你的问题中解释为什么你要把这整件事包装在一个包罗万象的例外区块中。好吧,现在我有它来保存分数,但我想让他们自己写。您能帮忙吗?@user1329880:f.write%s\n%score\n是一个特殊的换行符,它指示下一个项目应该在它自己的行上。想想看,当你按下回车键或回车键时,你实际上是在插入一个看不见的换行符:现在我用它来保存分数,但我希望它们放在自己的行中。您能帮忙吗?@user1329880:f.write%s\n%score\n是一个特殊的换行符,它指示下一个项目应该在它自己的行上。想想看,当你按回车键或回车键时,你实际上是在插入一个不可见的换行符:我自己不知道搁置模块,谢谢你的提示@特丁顿:当然。我认为它的应用范围不太广。这主要是为了避免在需要时对自己的对象进行酸洗。唯一的问题是我必须使用try和except,所以我不能使用
这个代码。你能看看我发布的内容,看看你是否能理解它吗?@user1329880:1try-except对你使用这个例子的能力没有任何影响。2你不应该把15行以上的代码包装在一个通用的catch all块中,除了块。我自己不知道shelve模块,谢谢你的提示@特丁顿:当然。我认为它的应用范围不太广。这主要是为了避免在需要时对自己的对象进行酸洗,唯一的问题是我必须使用try和except,所以我不能使用这段代码。你能看看我发布的内容,看看你是否能理解它吗?@user1329880:1try-except对你使用这个例子的能力没有任何影响。2您不应该在一个通用的catch-all块中包装15行以上的代码。
# Opening a file for writing will return the file handle f
f = open('/tmp/workfile', 'w')

# You can then write to the file using the 'write' method
f.write('Hello world!\n')

# To read your data back you can use the 'read' or 'readlines' methods

# Read the entire file
str = f.read()

# Read the file one line at a time
line = f.readline()

# Read the file into a list
list = f.readlines()