我的代码应该计算并打印给定文件变量名的每种流体的平均pH值。
到目前为止,我一直在尝试使用split()
将txt文件分割成多个部分。
我真的不知道如何把函数一行一行地分开来计算每个pH值并分别打印出来。你知道吗
现在它什么也不打印,因为它很可能在第一个插槽中看不到数字
功能
def average_ph(file_variable):
result = 0
line = file_variable.readline()
found = False
while line != "" and not found:
list = line.strip().split(",")
if list.isnum:
result += list
if line != "":
avg = result / 3
if not found:
result = None
print(avg)
return avg
主要
file_name = str(input("Enter a file name: "))
file_variable = open(file_name, "r", encoding="utf-8")
文件-名称:pH.txt文件你知道吗
Lemon juice,2.4,2.0,2.2
Baking soda (1 Tbsp) in Water (1 cup),8.4,8.3,8.7
Orange juice,3.5,4.0,3.4
Battery acid,1.0,0.7,0.5
Apples,3.0,3.2,3.5
孩子,从哪里开始?你知道吗
首先,
list
是Python中内置类型的名称,虽然您可以通过将它用作变量名来掩盖这一点,但为了避免混淆自己和其他人,您确实不应该:好的,这样更好。
lst
是类的实例,现在仍然可以称为list
。现在,您的if lst.isnum:
似乎试图测试该实例的方法的输出。但是在Python中,如果不键入括号,就不能调用方法。如果没有括号,当前,您的if
语句将询问指向方法本身的指针是否为非零,对于存在的方法,该指针始终为真。。。你知道吗好的,这样更好。但请注意,我说过,“…对于存在的方法”。
isnum
不是list
类的方法,因此代码只会在这里引发异常。您可能是指字符串方法.isnumeric
:当然,这仍然是错误的。您要测试列表中的项目是否为数字。因此,需要调用每个项的函数或方法,而不是调用列表本身的函数或方法。尽管字符串有一个
isnumeric
方法,但是list
类(我们的lst
变量所属)没有。一个优雅的方法是使用“列表理解”:当然,这实际上并不能将项目从字符串转换成数字。你真的认为你可以把一堆字符串加起来除以3吗?你知道吗
好的,现在我们有一个实际的浮点数列表,可以用数字进行操作。但是我们已经扔掉了我们测量的物质的信息。你知道吗
然后我建议你以某种方式将每个pH值列表/平均值与其各自的物质相关联,否则关联信息将丢失/损坏。使用
dict
有一些简洁的方法可以做到这一点,尽管目前有一个名为found
的变量未使用,这表明您可能打算执行以下操作:(注意:如果这样做,请在要检查每条线的循环中执行,以查看它是否是目标。)
现在,关于你的
result += lst
。。。好吧,你把result
初始化为0
,所以它是一个整数,而lst
我们知道是一个list
。你不能把一个list
加到一个整数上,这是没有意义的。您可能想做的是sum
列表中的值(您甚至不需要result
):注意,我是除以
lst
的长度,而不是硬编码其中的数字3。像这样的硬编码假设是为你未来的自我设下难以发现的陷阱的一个非常有效的方法,所以让我们避免它。你知道吗祝你好运。你知道吗
我的解决方案:
输出:
Python3有一个built-in mean function
您只需要弄清楚如何正确地读取文件并分割数据。你知道吗
作为输出,应该看到
相关问题 更多 >
编程相关推荐