尝试在 python 3 上的作业上对我的代码进行故障排除时遇到一些问题



我一直在尝试这个作业,但我遇到了一些我仍然无法解决的问题。首先,我无法从文本中收集正确的数字总和,所以我的平均值非常偏离。其次,对于第 14 行,在将其更改回浮点数之前必须将我的总和定义为字符串确实感觉很奇怪,尽管它没有给我回溯。最后,问题指出不使用 sum(( 函数,但我在不使用它时遇到了麻烦。如果可能的话,我想了解限制我们使用 sum(( 函数的问题背后的理由是什么。

一些帮助将不胜感激!

文件名:https://www.py4e.com/code3/mbox-short.txt,输入应为mbox短.txt

PS :我添加了计数作为最终输出,只是为了看看它注册了多少行。

分配:

编写一个程序,提示输入文件名,然后打开该文件并通读该文件,查找以下形式的行:

X-DSPAM-置信度: 0.8475

对这些线进行计数并从每条线中提取浮点值,并计算这些值的平均值并生成如下所示的输出。不要在解决方案中使用 sum(( 函数或名为 sum 的变量。 您可以在下面测试时 http://www.py4e.com/code3/mbox-short.txt 下载示例数据,输入 mbox-short.txt 作为文件名。

fname =input("Enter file name: ")
fhand = open(fname)
for lx in fhand :
if not lx.startswith("X-DSPAM-Confidence:") :
continue
ly = lx.replace("X-DSPAM-Confidence:"," ")
ly = ly.strip()
def avg():
sum = 0
count = 0
count = count
for values in ly :
count = count + 1
sum = str(sum) + values
return print("Average spam confidence:", count, float(sum) / count)
avg()

我对你的代码进行了一些更改。将每个浮点数存储到一个列表中,并在执行加法运算以查找总和时循环访问此列表。

fname =input("Enter file name: ")
fhand = open(fname)
num_list = []
for lx in fhand :
if not lx.startswith("X-DSPAM-Confidence:") :
continue
ly = lx.replace("X-DSPAM-Confidence:","")
num_list.append(float(ly))
def avg():
total = 0
count = 0
for values in num_list:
count = count + 1
total += values
return print("Average spam confidence:", count, total / count)
avg()

输出:

Average spam confidence: 27 0.7507185185185187

这对我有用

summition = 0
fname =input("Enter file name: ")
count = 0
fhand = open(fname)
for lx in fhand :
if not lx.startswith("X-DSPAM-Confidence:") :
continue
ly = lx.replace("X-DSPAM-Confidence:"," ")
ly = ly.strip()
summition += float(ly)
count = count + 1
fhand.close()
print("Average Spam " + str(count)+ " " +  str(summition/count))

错误代码提示:-

  • 始终关闭文件句柄
  • 返回打印((//返回无

最新更新