Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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
List 试图在无关文件中找到最小数字并打印它_List_File_For Loop - Fatal编程技术网

List 试图在无关文件中找到最小数字并打印它

List 试图在无关文件中找到最小数字并打印它,list,file,for-loop,List,File,For Loop,对于我正在处理的任务,我需要浏览一个来自OurWorldInData.org的文件,该文件包含所有国家的名称、代码、,西班牙流感患者的年数和预期寿命,我需要找出预期寿命最低和最高的年份和国家名称,并为用户提供输入年份的方法和显示该年份预期寿命的程序。我不知道yall能提供多少帮助,因为如果你没有信息的csv文件,很难模仿,但这是我现在的代码 filename = 'Life_expectancy.csv' with open(filename) as le_file: next(le_

对于我正在处理的任务,我需要浏览一个来自OurWorldInData.org的文件,该文件包含所有国家的名称、代码、,西班牙流感患者的年数和预期寿命,我需要找出预期寿命最低和最高的年份和国家名称,并为用户提供输入年份的方法和显示该年份预期寿命的程序。我不知道yall能提供多少帮助,因为如果你没有信息的csv文件,很难模仿,但这是我现在的代码

filename = 'Life_expectancy.csv'

with open(filename) as le_file:
    next(le_file)
    for line in le_file:

        line = line.strip().split(",")
        
        name = line[0]
        code = line[1]
        year = int(line[2])
        life_expectancy = float(line[3])
        
        min(life_expectancy) = min_life_expectancy

print(f'Name: {name}, Code: {code}, Year: {year}, Life Expectancy: {life_expectancy}')

我花了很长一段时间来思考这个任务,并决定只尝试min(预期寿命),但出现了一个错误,上面写着“SyntaxError:can not assign to function call”,我不知道这是什么意思。如果有人能帮助我,我将不胜感激。

因此我创建了一个名为
life.csv
的小型虚拟数据文件。很简单。看起来是这样的:

Name1,asd,1990,74,blah,blah,blah
Name2,bec,1923,41,blah,blah,blah
Name3,fre,1983,93,blah,blah,blah
Name4,jve,1066,23,blah,blah,blah
Name5,vne,1930,43,blah,blah,blah
一个很好的建议是创建一个提问的假人,但暂时不要担心这个问题!:-)希望它看起来有点像你的顶部

我修改了你的密码。如果您在诊断这种类型的循环时遇到困难,请记住,在调试时,在每次迭代中使用print()语句是您的朋友,因为您刚开始!但是,我希望我没有太抽象,所以您很高兴能够理解这一点,并了解发生了什么:

rows = [] 
with open(filename) as le_file: 
    next(le_file) 
    for line in le_file: 
 
        line = line.strip().split(",") 
        rows.append(line) 
这样,您将得到一个名为rows的变量,该变量包含拆分数据

rows
[['Name1', 'asd', '1990', '74', 'blah', 'blah', 'blah'],
 ['Name2', 'bec', '1923', '41', 'blah', 'blah', 'blah'],
 ['Name3', 'fre', '1983', '93', 'blah', 'blah', 'blah'],
 ['Name4', 'jve', '1066', '23', 'blah', 'blah', 'blah'],
 ['Name5', 'vne', '1930', '43', 'blah', 'blah', 'blah']]
现在我们可以提取具有最小年龄的行的索引,如下所示:

ages = [row[3] for row in rows]
min_age_idx = ages.index(min(ages))
这将返回CSV中最小年龄的第一个索引,您现在可以使用该索引获取相关条目的详细信息:

details = rows[min_age_idx]
print('Name: {}, Code: {}, Year: {}, Life Expectancy: {}'.format(details[0], details[1], details[2], details[3])) 
现在,我很欣赏这不是最简洁的解决方案,但它很好地说明了您要实现的目标。您所遇到的问题是,在您知道哪一行具有最小年龄之前,您仍然在阅读将条目分配给变量的文件。因此,在最小值行之后的每个年龄段都会重新分配最终在打印语句中使用的变量。有很多方法可以解决问题或简化打印语句,包括使用帮助库,如,但我认为了解问题的进展情况很重要

“无法分配给函数调用”的原因是因为min()是一个函数调用,它位于语句的左侧。如果要使用min()函数调用的结果分配一个变量,它将如下所示:

my_min_value = min(values)
=
的左侧是您要分配给的对象,右侧是您要分配其结果的操作

我真的希望这能帮你把事情弄清楚!:-)