使用python求和和平均值
我已经写了一段代码,可以从 文本文件并生成数字列表使用python求和和平均值,python,Python,我已经写了一段代码,可以从 文本文件并生成数字列表 我的挑战是对连续的数字求和,然后找到 数字的平均值 我不允许使用sum函数,而且我是python新手。。 这是我到目前为止写的代码 我可以通过列表添加哪些内容 错误:“第24行浮动对象不可编辑”。。。第24行是循环的第4行fnum是浮点。它不是数组,因此它是不可iterable的,并且不能在for循环中迭代 您可能不需要数组来确定总数和平均数: fname = "c:\\mbox-short.txt" fh = op
错误:“第24行浮动对象不可编辑”。。。第24行是循环的第4行
fnum
是浮点。它不是数组,因此它是不可iterable的,并且不能在for循环中迭代
您可能不需要数组来确定总数和平均数:
fname = "c:\\mbox-short.txt"
fh = open(fname)
count = 0
total = 0
for line in fh:
if line.startswith("X-DSPAM-Confidence:"):
xpos = line.find(' ')
num = line[xpos : ]
fnum = float(num)
total += fnum
count += 1
print("Total = " + str(total))
print("Average = " + str(total / count))
print("Number of items = " + str(count))
fnum
是一个浮点数。它不是数组,因此它是不可iterable的,并且不能在for循环中迭代
您可能不需要数组来确定总数和平均数:
fname = "c:\\mbox-short.txt"
fh = open(fname)
count = 0
total = 0
for line in fh:
if line.startswith("X-DSPAM-Confidence:"):
xpos = line.find(' ')
num = line[xpos : ]
fnum = float(num)
total += fnum
count += 1
print("Total = " + str(total))
print("Average = " + str(total / count))
print("Number of items = " + str(count))
首先,一个打开的文件只能执行一次,您的代码显示了4个循环,以fh:中的行的
开头。在第一个循环之后,文件指针将到达文件的末尾,下面的循环应该立即返回。因此,应首选带有
的
接下来在循环中的某个地方,您将在fnum
中获得一个浮点值。只需在开始循环之前初始化total
,并在得到它时添加fnum
:
total = 0
with open(fname) as fh:
for line in fh:
if line.startswith("X-DSPAM-Confidence:"):
# print(line)
xpos = line.find(' ')
# print(xpos)
num = line[xpos : ]
# print(float(num))
fnum = float(num)
# print(fnum)
total += fnum
# print(total)
使用
可确保文件在循环结束时完全关闭。首先,打开的文件只能执行一次,并且您的代码显示4个循环,从fh:
中的行开始。在第一个循环之后,文件指针将到达文件的末尾,下面的循环应该立即返回。因此,应首选带有的
接下来在循环中的某个地方,您将在fnum
中获得一个浮点值。只需在开始循环之前初始化total
,并在得到它时添加fnum
:
total = 0
with open(fname) as fh:
for line in fh:
if line.startswith("X-DSPAM-Confidence:"):
# print(line)
xpos = line.find(' ')
# print(xpos)
num = line[xpos : ]
# print(float(num))
fnum = float(num)
# print(fnum)
total += fnum
# print(total)
with
可确保文件在循环结束时完全关闭。在这种情况下,您不必使用startsWith。最好对文件的每一行使用拆分。每一行将把所有单词拆分成一个列表。然后使用您查找的索引,X-DSPAM-Confidence:。如果存在,则取相应的兴趣值。在这种情况下,它是索引编号1。代码如下:
total = 0
number_of_items = 0
with open("dat.txt", 'r') as f:
for line in f:
fields = line.split()
if fields != []:
if fields[0] == "X-DSPAM-Confidence:":
number_of_items += 1
total += float(fields[1])
print(total)
print(number_of_items)
avg = (total/number_of_items)
print(avg)
我将您的数据保存在一个名为“dat.txt”的文本文件中
希望对你有帮助 在这种情况下,您不必使用startsWith。最好对文件的每一行使用拆分。每一行将把所有单词拆分成一个列表。然后使用您查找的索引,X-DSPAM-Confidence:。如果存在,则取相应的兴趣值。在这种情况下,它是索引编号1。代码如下:
total = 0
number_of_items = 0
with open("dat.txt", 'r') as f:
for line in f:
fields = line.split()
if fields != []:
if fields[0] == "X-DSPAM-Confidence:":
number_of_items += 1
total += float(fields[1])
print(total)
print(number_of_items)
avg = (total/number_of_items)
print(avg)
我将您的数据保存在一个名为“dat.txt”的文本文件中
希望对你有帮助 代码“float object not iterable on line 24”有什么问题。。。第24行是我编辑的第4行。第一部分工作,我已经输出了列表。。我的挑战是不使用sum函数对列表中的成员求和。。然后找到平均值请同时上传文本文件示例。代码“float object not iterable on line 24”有什么问题。。。第24行是我编辑的第4行。第一部分工作,我已经输出了列表。。我的挑战是不使用sum函数对列表中的成员求和。。然后找到平均值请同时上传文本文件sample.print(fnum)输出27个浮点数的列表,如何在不使用求和函数的情况下将它们排列成数组或连续相加。我刚刚尝试了这个方法,但仍然对最后一个for循环def figs()说not iterable:print(fnum)total=0 for I in figs:total+=int(I)print(total)在它出错的行上,fnum
等于0.8475
。如何将输出安排在一个数组中,以便使用for循环遍历它?您可能不需要数组来确定总数和平均值,我已更新了我的解决方案总数和平均值。print(fnum)输出27个浮点数的列表,,如何在不使用求和函数的情况下,将它们排列成一个数组或连续相加。我刚刚尝试了这个方法,但仍然对最后一个for循环def figs()说not iterable:print(fnum)total=0 for I in figs:total+=int(I)print(total)在它出错的行上,fnum
等于0.8475
。如何将输出安排在一个数组中,以便我可以使用for循环遍历它。您可能不需要数组来确定总数和平均值,我已更新了我的解决方案,即总数和平均值。感谢您的帮助。。有27行包含“X-DSPAM..”第一个代码给出了一条错误消息:::TypeError:undefined不是一个对象(计算'a.constructor')我注意到当我使用“with function”时出现了这个消息我的代码输出了27个浮点数的列表,我的挑战是将它们分组到一个数组中,这样我就可以使用for循环遍历它们loop@user1855085我修改了代码,并尝试将输出写入文本文件,以便读取它们,但在第20行遇到错误代码…((ExternalError:todo;尚未在第20行实现非读取打开))。。这是我在fh:if-line.startswith(“X-DSPAM-Confidence:”):count=count+1#print(count)if-line.startswith(“X-DSPAM-Confidence:”):#print(line)xpos=line.find(“”)#print(xpos)num=line[xpos:]#print(float(num))fnum=float(num)file=open)(“kxk.txt”,“w”)数据=f