2014-07-11 24 views
-2

我有煩惱:Python;試圖在一個外部文件編寫與此代碼的變量

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 

這是奇怪的;我已經將它定義爲一個字符串,所以我不知道爲什麼我得到這個錯誤。

+1

像'round(newint)'這樣的代碼什麼都不做 - 或者確切地說:它將'newint'舍入並忽略結果。 – Matthias

+0

將來,請將您的代碼減少到重現問題的[minimal example](http://stackoverflow.com/help/mcve),並確保您的問題格式正確 - 它有助於清楚代碼是什麼,什麼是代碼是輸入和什麼是輸出。 – jonrsharpe

回答

3

你必須使它成爲一個字符串。

strength = str(strength) 

只是說

str(strength) 

不改變它的類型。

+0

或者,結合兩個:'doc.write(str(strength))' –

+1

是的,但是從他的代碼中,我認爲他認爲他正在用'str(力量)'來強化一個字符串,我想澄清他。 – Hoopdady

0

你所做的錯誤是

str(strength) 
str(skill) 
str(health) 
str(dexterity) 

你試圖將變量轉換爲字符串,但不是保存到相應的變量

嘗試

strength=str(strength) 
skill=str(skill) 
health=str(health) 
dexeterity=str(dexterity) 
1

「我有已經將其定義爲一個字符串「

不,你沒有。 str()確實不是改變輸入對象,它創建一個新對象並返回它*。您需要分配新對象返回給是指舊的,例如:

strength = str(strength) 

* 除了在參數已經是一個字符串的情況;那麼你會得到相同的對象。

相關問題