当我尝试将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)
运行代码时发生的错误的屏幕截图
答案 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
之类的标准名称。