它包括创建一个函数 def(,) 在 CSV 文件中搜索孩子的名字并给出他的年龄。
CSV 文件的结构如下:
Nicholas,12
Matthew,6
Lorna,12
Michael,8
Sebastian,8
Joseph,10
Ahmed,15
Run Code Online (Sandbox Code Playgroud)
而我尝试的代码是这样的:
def fetchcolvalue(kids_agefile, kidname):
import csv
file = open(kids_agefile, 'r')
ct = 0
for row in csv.reader(file):
while True:
print(row[0])
if row[ct] == kidname:
break
Run Code Online (Sandbox Code Playgroud)
令人沮丧的是,它没有给我任何错误,而是一个无限循环:我认为这就是我做错的地方。
到目前为止,我从书中学到的只是循环(while和for)和 if-elif-else 循环,除了 CSV 和文件基本操作操作之外,所以我真的不知道如何仅用这些来解决问题工具。
请注意,该函数必须使用通用的 2 列 CSV 文件,而不仅仅是孩子的文件。
对while True在循环将会使你永远循环下去(不变量是内循环改变)。只需删除它:
for row in csv.reader(file):
if row[ct] == kidname:
break
else:
print("{} not found".format(kidname))
Run Code Online (Sandbox Code Playgroud)
对 csv 文件进行迭代,一旦row[ct]equals Kidname 就会中断。
我会添加一个else语句,以便您知道文件是否已被完全扫描而没有找到孩子的名字(只是为了暴露一些鲜为人知的elseafterfor循环用法:如果没有break遇到,则进入else分支。)
编辑:您可以在一行中使用any和生成器理解来完成:
any(kidname == row[ct] for row in csv.reader(file))
Run Code Online (Sandbox Code Playgroud)
True如果任何第一个单元格匹配,将返回,也可能更快。