我正在创建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.
零不应该在那里。
答案 0 :(得分:1)
说PlayerOneSkill
是10
。现在您将其转换为字符串'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.