input["shijiao"]得到的是这么个字符串:
["9000.00","12000.00","32000.00","10000.00","20000.00"]
转换为 float 型各种报错。。。
guimo1=["9000.00","12000.00","32000.00","10000.00","20000.00"]
nirr1=["0.65","22.74","12.81","0.00","11.46"]
guimo=input["shijiao"]
nirr=input["nirr"]
guimof = [ float(x) for x in guimo1] //一旦替换为guimo,立即报错无法将str转换为float
nirrf = [ float(x) for x in nirr1 ]
s=sum(guimof)
outnirr=0
for i in range(len(guimof)):
outnirr += (guimof[i]/s)*nirrf[i]
output = {'加权平均nirr':outnirr,'shijiao':guimo}
终于搞明白了,这个红字报错,其实是测试过程中导致的,测试中会把这些数据替换为 1,所以会提示报错,
![image.png]()
但是正常是能运行的。。。。现在好了
只保留最少的代码测试了下
![image.png]()
![image.png]()
json.load 下来是个 int 型的,但是打印出去确不是个 int,这是咋回事啊。。。
注释我都去掉了,不是注释的问题,现在提示错误是 int 型无法转换呢
![image.png]()
突然发现你这里代码有很多错误
python 中的注释是## 不要//
为啥类型是 int 呢,转换不成数字呢。。。
![image.png]()
##guimo1=["9000.00","12000.00","32000.00","10000.00","20000.00"]
##nirr1=["0.65","22.74","12.81","0.00","11.46"]
import JSON
guimo=json.loads(input["shijiao"])
nirr=json.loads(input["nirr"])
guimof = [ float(x) for x in guimo1] //一旦替换为 guimo,立即报错无法将 str 转换为 float
nirrf = [ float(x) for x in nirr1 ]
s=sum(guimof)
outnirr=0
for i in range(len(guimof)):
outnirr += (guimof[i]/s)*nirrf[i]
output = {'加权平均 nirr':outnirr,'shijiao':guimo}
既然 input["shijiao"]这是个字符串:
["9000.00","10000.00","32000.00","10000.00","20000.00"]
尝试了一顿操作
input["shijiao"].lstrip("[").rstrip("]").replace("'", "").replace(" ", "").split(",")
结果变成了:
[""9000.00"",""10000.00"",""32000.00"",""10000.00"",""20000.00""]
可接收的数据类型
官方文档里这么说的,可是怎么把这个当成数组的字符串转成 list 呢?
input["shijiao"]好像获取到的是一个字符串类型的内容,内容类型跟 guimo1 不一样,也无法转换成 list?