2013-06-03 147 views
1

所以我讀文件,並將其存儲在變量,因爲我去,當它到達這條線:ValueError異常:無法將字符串轉換爲float:「R」

valP=float(listEleVP) 

它返回:

ValueError: could not convert string to float: 'r' 

這是整個代碼:

def main(): 
    inFile=open('3weightcalc.in','r') 
    i=0 
    for line in inFile.readlines(): 
     a=line.split() 

     for items in a: 
      listEleVP=items[1] 
      listEleVS=items[3] 
      valP=float(listEleVP) 
      valS=float(listEleVS) 
      FinVal=float(valP*valS) 
      txtA=items [0] 
      txtB=items [2] 
      print("On ",txtB,txtA,"would weigh ",FinVal,"pounds.") 
    inFile.close() 
main() 

,這是輸入(.in)中的文件數據:

Fred 179.0 Luna 0.1654 
Layla 131 Mars 0.376 
Pat 145.2 Neptune 1.14 
END 0 0 0 
+0

你嘗試過什麼?你打印了你的變量,還是做了一些其他的調試以找出錯誤的位置?在發佈問題之前,嘗試一些這些方法。 – erdekhayser

回答

1

我認爲內cicle是沒有必要的:

def main(): 
    inFile=open('3weightcalc.in','r') 
    i=0 
    for line in inFile.readlines(): 
     items=line.split() 

     listEleVP=items[1] 
     listEleVS=items[3] 
     valP=float(listEleVP) 
     valS=float(listEleVS) 
     FinVal=float(valP*valS) 
     txtA=items [0] 
     txtB=items [2] 
     print("On ",txtB,txtA,"would weigh ",FinVal,"pounds.") 
    inFile.close() 
main() 

問題是,內內cicle你迭代通過split返回的字符串。

希望這會有所幫助!

+0

非常感謝!像魅力一樣工作! – user2446048

+0

非常歡迎:) –

1
>>> text = """Fred 179.0 Luna 0.1654 
... Layla 131 Mars 0.376 
... Pat 145.2 Neptune 1.14 
... END 0 0 0""" 
>>> for line in text.splitlines(): 
...  a = line.split() 
...  for items in a: 
...    print items[1], items[3] 
... 
r d 
7 . 
u a 
. 6 
a l 
3 
Traceback (most recent call last): 
    File "<stdin>", line 4, in <module> 
IndexError: string index out of range 

而應該做的:

>>> for line in text.splitlines(): 
...  items = line.split() 
...  print items[1], items[3] 
... 
179.0 0.1654 
131 0.376 
145.2 1.14 
0 0 
+0

它的一個學校作業:我必須使用.in文件。 – user2446048

+0

@ user2446048我使用了一個字符串,因爲我不想浪費時間將示例數據保存到文件中。如果'inFile'的內容與'text'的內容相同,那麼在text.splitlines()中有'inFile行'或'for line'就會產生完全相同的結果。 – Bakuriu

相關問題