当我们运行这段代码时,就会出现上面提到的错误。在过去的几个小时里,我们一直在努力解决这个问题,但似乎没有任何效果。
有人可以为我们指明正确的方向。
import math
myList=[]
with open("data_2.txt") as f:
for line in f:
myList.append(tuple(line.rstrip().split()))
dic = {}
for index, ele in enumerate(myList):
key=index+1
val_2=float(ele[1])
val_3=float(ele[2])
dic.update({key: (ele[0],val_2,val_3)})
for i in range(len(dic)):
power= 5//(val_2)
P=pow(0.5,power)
cal_grams=val_3*P
if cal_grams<100:
outfile = open("Element_Shortage_List.txt", "w")
outfile.write(ele+ " " + float(cal_grams) + "\n")
outfile.close()
答案 0 :(得分:0)
正如错误消息告诉您的那样,您将一个元组与一个字符串连接起来。
如果您真的想将以下行写入您的文件,请使用字符串格式:
然后这一行:
outfile.write(ele+ " " + float(cal_grams) + "\n")
成为
outfile.write(f"{ele} {float(cal_grams)}\n")
有关 f 字符串的更多详细信息:https://www.python.org/dev/peps/pep-0498/
答案 1 :(得分:0)
感谢大家,尤其是 Menno Holscher。
它终于在我们这样做时读取
outfile.write(str(ele)+ " "+str(cal_grams)+"\n")
答案 2 :(得分:0)
错误告诉您:您不能添加元组和 str 类型,因此将元组转换为 str。像这样。
import math
myList=[]
with open("data_2.txt") as f:
for line in f:
myList.append(tuple(line.rstrip().split()))
dic = {}
for index, ele in enumerate(myList):
key=index+1
val_2=float(ele[1])
val_3=float(ele[2])
dic.update({key: (ele[0],val_2,val_3)})
for i in range(len(dic)):
power= 5//(val_2)
P=pow(0.5,power)
cal_grams=val_3*P
if cal_grams<100:
outfile = open("Element_Shortage_List.txt", "w")
outfile.write(
str(ele) + " " + str(float(cal_grams)) + "\n")
outfile.close()
如果你在 python3 上,你应该检查 f 字符串。 这很简单。一个例子是:
outfile.write(f"{ele} {float(cal_grams)}\n")