无法在Python 3.6中将str转换为float

时间:2018-07-22 11:44:10

标签: python string python-3.x floating-point type-conversion

当我尝试将str转换为float以求和时,出现此错误“ TypeError:'str'对象不可调用”。

# To Find sum of no. s  seperated by commas in a string 
  t=''
  y=''
  z=""
  s = "1.23,2.4,3.123"
  for x in s:
     if x != ',':
         y += x
     else: 
         t = z
         z = y
         y = ''
  print("y=",y,"z=",z,"t=",t)
  y = float(y)
  z = float(z)
  t = float(t)
  print("Sum is =",y+z+t)   

运行代码时发生的错误的屏幕截图 Screenshot of the error occurring when i run the code

1 个答案:

答案 0 :(得分:5)

我看到您在Spyder中运行了该代码。我使用的环境很棒,但是确实有一个缺点。您定义的所有变量仍会在代码开头定义。

几乎可以肯定,您定义了一个名称为func FetchNotFinishedTBLRows(limit int) []NotFinishedTBLFields { rowValues := make(map[string]interface{}) var row NotFinishedTBLFields var rows []NotFinishedTBLFields iter := Instance().Query(fmt.Sprintf(`SELECT * FROM %q Limit %d`, NotFinishedTBLConfig.Name, limit)).Consistency(gocql.All).Iter() for iter.MapScan(rowValues) { fmt.Println("rowValues ", rowValues) row = NotFinishedTBLFields{ Bulk_id: rowValues["bulk_id"].(int64), Recipient: rowValues["recipient"].(string), Operator: rowValues["operator"].(string), Tracking_code: rowValues["tracking_code"].(string), } rows = append(rows, row) rowValues = make(map[string]interface{}) } if err := iter.Close(); err != nil { log.Fatal(err) } return rows } 的变量,该变量包含一个字符串值。因此,您的程序尝试执行float,但误解了y = float(y)的含义。我们可以看到,如果您看到“变量浏览器”窗口,而不是屏幕快照中的“帮助”窗口。

在关闭并重新启动Spyder之后,请再次尝试程序,看看是否仍然出现该错误。从现在开始,请避免为变量使用float之类的标准名称。