1

主要目标:从文本文件中读取最高分的功能。要传递给函数的参数:一个文本文档!

def highscore():
    try:
        text_file = open ("topscore.txt", "r")
        topscore = int(text_file.read())
        print topscore
        text_file.close()
        return topscore
    except:
        print "Error - no file"
        topscore = 0
        return topscore

如何添加文本文件作为参数?

4

3 回答 3

4
def highscore(filename):
    try:
        text_file = open (filename, "r")

哦,你应该停止在你的代码块中放入不必要的代码try。一个干净的解决方案如下所示:

def highscore(filename):
    if not os.path.isfile(filename):
        return 0
    with open(filename, 'r') as f:
        return int(f.read())

或者,如果您希望在读取文件失败的任何情况下返回 0:

def highscore(filename):
    try:
        with open(filename, 'r') as f:
            return int(f.read())
    except:
        return 0
于 2012-05-29T23:35:52.900 回答
1

另一种选择是提供关键字参数。例如,如果您有使用此功能的旧代码并且由于某种奇怪的原因无法更新,这可能会很有用。关键字参数可以包含默认值。

def highscore( filename = "filename.txt" ):
    try:
        text_file = open (filename, "r")

然后您可以像以前一样调用此函数以使用默认值“filename.txt”:

highscore()

或指定任何新文件名:

highscore( filename = "otherfile.csv" )

有关更多信息,请参阅 python 文档。 http://docs.python.org/tutorial/controlflow.html#default-argument-values

于 2012-05-30T01:49:22.963 回答
0
def highscore(filename):
   try:
      text_file = open(filename, "r")
      ...

只需在参数列表中添加一个变量标识符(例如filename),然后在打开文件时引用它。

然后使用您选择的文件名调用您的函数。

topscore = highscore("topscore.txt")
于 2012-05-29T23:36:00.470 回答