存储在文本文件中的Python变量不起作用,但应该

2024-09-29 18:49:23 发布

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

我已经为我的游戏建立了一个基于文本文件的存储系统,用关键字存储所需变量的值——例如,告诉游戏要玩哪一章的密码。然而,它似乎出现了故障,我不明白为什么。你知道吗

在开始游戏之前,我们有:

if not os.file.isfile('TSGsave{0}.txt'.format(name)):
    TSGsave=open('TSGsave{0}.txt'.format(name),'wt')
    TSGsave.write('\nw5CT$n<jfW=-#J%4Ya5@@')
    TSGsave.close()

(使用的关键字是一堆jibberish,因此用户无法在知道将要发生什么的情况下更改它)。这会将w5CT$n<jfW=-#J%4Ya5@@添加到文本文件中。我们有:

for i in range (len(lines)):
    if 'w5CT$n<jfW' in lines[i]:
        findpass=lines[i]
        for i in range (len(findpass)):
            if findpass[i]=='=':
                cutfrom=i+1
                password=findpass[cutfrom:len(findpass)]

检索变量(变量可以更改,因此不能作为定值写入)。我知道它是有效的,因为我在代码中添加了print (password),它返回了-#J%4Ya5@@。然后开始相应的章节,代码是:

if password=='-#J%4Ya5@@':

但它并没有启动缩进块。在shell中,程序结束并返回到>>>行。你知道吗

如果有一种方法可以修复这个代码,那就太好了——但是另一个代码也可以做同样的事情。你知道吗


Tags: 代码nameintxtformat游戏lenif
1条回答
网友
1楼 · 发布于 2024-09-29 18:49:23

您的行包含换行符,这些都包含在内。从线路上取下这些:

findpass = lines[i].rstrip('\n')

打印一个带有换行符的值只需在print后面添加一条额外的黑线。始终使用^{} function生成字符串的Python表示,以查看以下字符:

>>> print '-#J%4Ya5@@\n'
-#J%4Ya5@@

>>> print repr('-#J%4Ya5@@\n')
'-#J%4Ya5@@\n'

您的解析代码过于复杂;您可以使用^{}^{}从行中拆分密码。您应该直接循环lines列表,而不是使用range()生成索引:

for line in lines:
    if 'w5CT$n<jfW' in line:
        password = line.partition('=')[2].rstrip('\n')

相关问题 更多 >

    热门问题