写入文本文件时,字符串值中出现“0”字符

时间:2013-10-30 10:06:57

标签: python text

我正在创建Python代码,其中将通过除以两个值而生成的字符串值保存到.txt文件中。写入文件时,值中会出现零(0)个字符。以下是代码的相关部分:

PlayerOneSkill = str(PlayerOneSkill)
PlayerOneStrength = str(PlayerOneStrength)
PlayerTwoSkill = str(PlayerTwoSkill)
PlayerTwoStrength = str(PlayerTwoStrength)
P1SkillMod = str(P1SkillRoll12/P1SkillRoll4)
P1StrengthMod = str(P1StrengthRoll12/P1StrengthRoll4)
P2SkillMod = str(P2SkillRoll12/P2SkillRoll4)
P2StrengthMod = str(P2StrengthRoll12/P2StrengthRoll4)

f = file ("Attribute.txt","w")
f.write ("P1 skill is " + PlayerOneSkill + P1SkillMod)
f.write ("P1 strength is " + PlayerOneStrength + P1StrengthMod)
f.write ("P2 skill is " + PlayerTwoSkill + P2SkillMod)
f.write ("P2 strength is " + PlayerTwoStrength + P2StrengthMod)
f.close()

说玩家的一个属性是12和16,玩家的两个属性是10和11,文本文件会显示:

P1 skill is 102P1 strength is 106P2 skill is 100P2 strength is 101.

零不应该在那里。

2 个答案:

答案 0 :(得分:1)

PlayerOneSkill10。现在您将其转换为字符串'10' 假设P1SkillRoll12/P1SkillRoll4的结果为2。您还可以将其转换为字符串'2'

然后你连接这些字符串('10''2'),这将导致'102'

如果你想做整数arithmetik,你应该使用整数(对于任何其他数字类型都是true)。

所以你正在寻找像

这样的东西
# use numerical types here, not strings
skill = PlayerOneSkill + P1SkillRoll12/P1SkillRoll4 

# or use any other string formating
f.write("P1 skill is " + str(skill)) 

答案 1 :(得分:1)

Xi Huan告诉你为什么你的代码是什么原因。更好的方法是:

f.write ("P1 skill is {0}".format( PlayerOneSkill + P1SkillMod))

对字符串使用format函数。 +运算符的效率非常低。这也可以让每个玩家更容易添加新行:

f.write ("P1 skill is {0}\n".format( PlayerOneSkill + P1SkillMod))  # New line added.