2013-06-03 148 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

相关问题