如何计算和显示程序运行的次数?

2024-09-30 03:22:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在制作一个基于文本的游戏,一旦完成,应该将某些变量写入文本文件:

==============
Story0: 
-----------
Players name: name
Players characteristic: characteristic

这很好,但是我希望实现的是这个函数的一种方法 文本来自于显示它正在生成的故事,这意味着它将在程序运行的第X次写入:StoryX

我不熟悉python文件的编写和读取,恐怕我离最好的解决方案还很远。下面的代码表示到目前为止我所做的(提供了一个错误):

def Endscript(numberofcycles):
    with open("playerstories.txt", 'a') as f:
        f.write("================\n")
        f.write("Story" + str(numberofcycles) + ": \n")
        f.write("-----------\n")
        f.write("Players name: " + Player.name)
        f.write("\n")
        f.write("Players characteristic: " + Player.char)
        f.write("\n")
    with open("number.txt", "r") as f:
        numberofcycles = f.readline()
        numberofcycles = int(numberofcycles)
        numberofcycles += 1
    with open("number.txt", "w") as f:
        numberofcycles = str(numberofcycles)
        f.write(numberofcycles)

我在这里试图做的是根据更改的X值从number.txt文件中更改一个数字的值(是的,只有一个数字)

谢谢你能提供的任何帮助


Tags: 文件name文本txtnumberaswith数字
2条回答

这就是你的意思吗

def Endscript():
    with open("playerstories.txt", 'a') as f:
        with open("number.txt", "r") as file:
            numberofcycles = file.readline()
            numberofcycles = int(numberofcycles)
        f.write("================\n")
        f.write("Story" + str(numberofcycles) + ": \n")
        f.write("     -\n")
        f.write("Players name: " + Player.name)
        f.write("\n")
        f.write("Players characteristic: " + Player.char)
        f.write("\n")
        with open("number.txt", "w") as f:
            numberofcycles += 1
            numberofcycles = str(numberofcycles)
            f.write(numberofcycles)

错误是由未定义的numberofcycles引起的,如果是,则是因为您没有读入txt文件以检索numberofcycles

您的想法是正确的,请记住,游戏的每次运行都是一个完全独立的过程,因此您的Endscript()函数实际上不知道numberofcycles,除非您已经从磁盘读取了它。这里有一个快速函数,可以访问单个文件并每次递增该值,返回该值供您使用

import os

def increment_counter(file_name):
    if not os.path.exists(file_name):
        with open(file_name, 'w') as fp:
            fp.write("1")
        return 1
    else:
        with open(file_name, 'r') as fp:
            current_count = int(fp.read().strip())
        with open(file_name, 'w') as fp:
            fp.write(str(current_count + 1))
        return current_count + 1
    
fname = 'test_counter.txt'
print(increment_counter(fname))
print(increment_counter(fname))
print(increment_counter(fname))
print(increment_counter(fname))

输出:

1
2
3
4

您可以将其与一个reset_counter()相结合,它只删除文件以重置它

相关问题 更多 >

    热门问题