我遇到了这段代码的麻烦:
import random
import time
y = 0
while y <3:
x = 0
y += 1
numlist = []
while x <5:
x += 1
four = random.randint (1,4)
twelve = random.randint (1,12)
newint = 10 + twelve /four
round (newint)
numlist.append (newint)
strength = numlist[0]
skill = numlist[1]
health = numlist[2]
dexterity = numlist[3]
round (strength, 10)
round (skill, 10)
round (health, 10)
round (dexterity, 10)
print (strength)
print (skill)
print (health)
print (dexterity)
str(strength)
str(skill)
str(health)
str(dexterity)
doc = open ("character1", "w")
doc.write ("Strength is")
doc.write (strength)
doc.close()
输出:
13.0
10.25
11.75
15.5
Traceback (most recent call last):
File "D:\LOCATION OF CODE, line 41, in <module>
doc.write (strength)
TypeError: must be str, not float
这很奇怪;我已经将它定义为一个字符串,所以我不知道为什么我会收到这个错误。
答案 0 :(得分:3)
你必须把它变成一个字符串。
strength = str(strength)
只是说
str(strength)
不会更改其类型。
答案 1 :(得分:1)
“我已将其定义为字符串”
不,你没有。 str()
不更改输入对象,它会创建新对象并返回*。您需要将分配该新对象返回到引用旧对象的名称,例如:
strength = str(strength)
* ,除非参数已经是一个字符串;然后你得到同样的对象。
答案 2 :(得分:0)
你所犯的错误是
str(strength)
str(skill)
str(health)
str(dexterity)
您尝试将变量转换为字符串但未将其保存到相应的变量
尝试
strength=str(strength)
skill=str(skill)
health=str(health)
dexeterity=str(dexterity)