我编写了一个程序来解析文件中有关对象的信息,但是它始终不会读取文件列表中的最后一项,我也不知道为什么。
对象的计算方法(有问题的方法)取决于以下字典(简写为最小化):
S_dict = {'Advanced Saucecrafting': 5, 'The Way of Sauce': 3}对象本身是
class Character(object):
def __init__(self, name, idnum):
self.name = name
self.idnum = idnum
self.path = 'C:\\Users\\Bit\\Desktop\\Mafia\\data\\BtS_' + name + ' (#' + idnum + ')' + '.txt'
self.SC = 0
self.TT = 0
self.P = 0
self.S = 0
self.DB = 0
self.AT = 0
self.skills = [self.SC, self.TT, self.P, self.S, self.DB, self.AT]
self.SC_skills = []
self.TT_skills = []
self.P_skills = []
self.S_skills = []
self.P_skills = []
self.DB_skills = []
self.AT_skills = []
def compute(self):
self.SC = 0
self.TT = 0
self.P = 0
self.S = 0
self.DB = 0
self.AT = 0
self.SC_skills = []
self.TT_skills = []
self.P_skills = []
self.S_skills = []
self.P_skills = []
self.DB_skills = []
self.AT_skills = []
with open(self.path, 'r') as f:
text = f.read()
perms = text.split(', ')
for p in perms:
try:
self.SC += SC_dict[p]
self.SC_skills.append(p)
except KeyError:
pass
try:
self.TT += TT_dict[p]
self.TT_skills.append(p)
except KeyError:
pass
try:
self.P += P_dict[p]
self.P_skills.append(p)
except KeyError:
pass
try:
self.S += S_dict[p]
self.S_skills.append(p)
except KeyError:
pass
try:
self.DB += DB_dict[p]
self.DB_skills.append(p)
except KeyError:
pass
try:
self.AT += AT_dict[p]
self.AT_skills.append(p)
except KeyError:
pass
self.skills = [self.SC, self.TT, self.P, self.S, self.DB, self.AT]当我始终如一地运行计算时,并且强烈地无法读取我读取的.txt文件中的最后一个元素,它失败的示例文件如下所示
Perfect Freeze, The Long View, Wisdom of the Elder Tortoises, Ambidextrous Funkslinging, Pulverize, Snokebomb, Subtle and Quick to Anger, The Way of Sauce, Torso Awaregness, Advanced Cocktailcrafting, Kung Fu Hustler, Cannelloni Cocoon, The Ode to Booze, Transcendental Noodlecraft, Master of the Surprising Fist, Spirit of Ravioli, Pastamastery, Advanced Saucecrafting在这种情况下,向量self.skills返回
4、8、10、3、9、6
但是self.skills3是3,当你查看S_dict时,你会发现它拥有‘高级Saucecrafting’和‘Sauce的方式’这两个键的总和应该是3+5= 8。此外,属性self.S_skills只是'Advanced‘,这表明for循环的这一部分从来没有在计算方法中运行过,这更多地证明了我怀疑这个冒犯的问题隐藏在里面。
发布于 2016-05-27 20:02:22
问题是,最后一个字符串(从拆分)有一个换行符,这将导致键查找错误。试着这样做:
perms = text.rstrip().split(', ')为我提供了这些技能输出:
[4, 8, 10, 8, 9, 6]https://stackoverflow.com/questions/37491216
复制相似问题