小tips
read 读取文件的所有内容,最终是字符串形式 “ ”各行与各行之间用换行符分隔开
readlines 读取文章的所有内容,最终是列表类型 [ ],用逗号将每行区分开
readline 只有一行内容的字符串‘ ’
题目
现给出一个csv文件,内容示例如下:
以第一行为例,1230表示12月30日,0101表示1月1日
要求:读入CSV文件数据,获得用户输入,用户键盘输入整数作为序号,序号建采用空格分隔,以回车结束。屏幕输出这些序号对应的节假日名称和假期范围,每个节假日的信息一行。在本次屏幕显示完成后,重新回到输入序号的状态。
参考输入输出格式如下:
请输入节假日序号:1 5 14
元旦(1)假期是12月30日至01月01日之间
端午节(5)假期是06月16日至06月18日之间
输入节假日编号有误!
请输入节假日序号:
下面是代码:
fi=open("PY301-vacations.csv","r") #读取CSV文件
ls = [] #创建一个新的空列表
for line in fi: #遍历fi
ls.append(line.strip("\n").split(",")) #去掉CSV文件的换行符,并将各行用逗号隔开
s=input("请输入节假日序号:").split(" ") #让用户输入节假日序号,序号间用空格隔开
while True: #设置一个循环
for i in s: #读取输入的节假日序号
flag=False
for line in ls:
if i== line[0]: #如果用户输入的序号与列表里第一个元素相同
print("{}({})假期是{}月{}日至{}月{}日之间".format(line[1],line[0],line[2][:2],line[2][2:],line[3][:2],line[3][2:]))
flag=True #如果if语句匹配不成功,此句不执行;如果if语句匹配成功,不执行下面的两行代码
if flag == False:
print("输入节假日序号有误!")
s=input("请输入节假日序号:").split(" ") #重新开始第二次输入
fi.close() #关闭fi
最终结果如下图所示:
一定要注意缩进格式!!!