Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python for Everyone第11章练习2';浮动';对象不可调用_Python_Python 3.x_Jupyter Notebook_Jupyter - Fatal编程技术网

Python for Everyone第11章练习2';浮动';对象不可调用

Python for Everyone第11章练习2';浮动';对象不可调用,python,python-3.x,jupyter-notebook,jupyter,Python,Python 3.x,Jupyter Notebook,Jupyter,这是我的问题 练习2:编写一个程序来查找表单中的行: 新版本:39772 使用正则表达式和findall()方法从每行中提取数字。计算数字的平均值,并将平均值打印为整数。 输入文件:mbox.txt 38549 输入文件:mbox short.txt 39756 代码: 这是输出 Enter file: mbox-short.txt --------------------------------------------------------------------------- TypeEr

这是我的问题

练习2:编写一个程序来查找表单中的行: 新版本:39772
使用正则表达式和findall()方法从每行中提取数字。计算数字的平均值,并将平均值打印为整数。
输入文件:mbox.txt
38549
输入文件:mbox short.txt
39756

代码:

这是输出

Enter file: mbox-short.txt
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-58-c4c50e707989> in <module>
     19             rev = rev + [val]           # Concats new values
     20 
---> 21 rev_sum = sum(rev)
     22 count = float*(len(rev))
     23 rev_ave = rev_sum / count

TypeError: 'float' object is not callable
输入文件:mbox-short.txt
---------------------------------------------------------------------------
TypeError回溯(最近一次调用上次)
在里面
19版本=版本+[val]#包含新值
20
--->21版次总和=总和(版次)
22计数=浮动*(长度(修订))
23 rev_ave=rev_总和/计数
TypeError:“float”对象不可调用

为什么?

我认为您不小心在某个地方用一个同名的
sum
变量覆盖了内置的
sum
。寻找:

sum = <some float value>
sum=

据我所知,您使用的方法似乎没有正确处理使用匹配模式找到的行。相反,它只是试图在数字不存在的情况下对其进行处理,这就是为什么会出现“被零除”的错误

但是,我们可以修改您的代码,改为查看所有匹配的所有匹配字符串,并将这些解析的数字附加为浮点数。从这里开始,你的求和和和平均工作得很好,没有错误

import re

rev = []

fname = input('Enter file: ')
try:
    fhand = open(fname)
except FileNotFoundError:
    print('File cannot be opened: ', fname)
    exit()

for line in fhand:
    line = line.rstrip()
    #print(line)
    rev_temp = re.findall('^New Revision: ([0.0-9.0]+)', line)
    for x in rev_temp:
        rev.append(float(x))


rev_sum = sum(rev)
count = float(len(rev))
rev_ave = int(rev_sum / count)
print(fname, ':', rev_ave)
我得到以下文件名:

mbox.txt : 38549
mbox-short.txt : 39756
我的文件名来源于:


您发布的代码与错误输出中的代码不一样。毫无疑问,其他地方的差异导致了我们只能猜测的问题。在上面的某个地方,在您没有向我们展示的内容中,您命名了一个变量
sum
。修复?不要这样做。嗨,你确实改进了代码,但是你没有回答他们的问题:为什么我会出现这个错误?请注意,这不是一个
zero错误
。这是一个
类型错误
。谢谢!代码有效!
mbox.txt : 38549
mbox-short.txt : 39756