问题描述

代码框中给出的代码是提示代码,你可以局部修改,或者全部删除重写。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

本题对应三个问题,请按照文件内说明修改代码,实现以下功能:‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

二千多年前希腊的天文学家希巴克斯命名十二星座,它们是水瓶座、双鱼座、白羊座、金牛座、双子座、巨蟹座、狮子座、处女座、天秤座、天蝎座、射手座、魔蝎座。给出一个CSV文件(PY301-SunSign.csv),内容示例如下:‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

序号,星座,开始月日,结束月日,Unicode‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

1,水瓶座,120,218,9810‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

2,双鱼座,219,320,9811‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

3,白羊座,321,419,9800‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

4,金牛座,420,520,9801‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

5,双子座,521,621,9802‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

…(略)‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

以第1行为例,120表示1月20日,218表示2月18日,9810是Unicode码。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

文章目录

  • 问题描述
  • 第一问:根据名称输出生日日期
  • 第二问:输入序号,输出对应星座信息
  • 第三问:在第二问基础上加上输入出错提示

第一问:根据名称输出生日日期

问题1(5分):在代码框中修改代码,读入CSV文件中的数据,获得用户输入。根据用户输入的星座名称,输出此星座的出生日期范围。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

参考输入和输出示例格式如下:‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

请输入星座中文名称(例如,双子座):双子座‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

双子座的生日位于521-621之间

fi=open('PY301-SunSign.csv','r',encoding='utf-8')
name=input('请输入星座中文名称(例如,双子座):')
ls=[]
for m in fi.readlines():ls.append(m.strip('\n').split(','))
for n in range(len(ls)):if ls[n][1]==name:print("{}的生日位于{}-{}之间".format(name,ls[n][2],ls[n][3]))

这一问采取的步骤比较简单,先读入文件(不要忘记encoding=‘utf-8’哦,不然在idle上可能会出现报错),然后遍历fi.readlines(),记住这个fi.readlines()的结果是一个列表,每一行的文本都是里面的一个元素,但是每个元素后面都有’\n’,所以取到后要去掉,然后用split(‘,’),把每一行元素里的子元素以逗号分隔变成列表,加到ls里面。这个时候ls是一个二维列表。然后以这个二维列表的个数去遍历,如果某一行的第一个元素刚好和用户输入的星座名一样,那我们就把这行元素的相关值输出出来。

第二问:输入序号,输出对应星座信息

问题2(10分):在代码框中修改代码,读入CSV文件中数据,获得用户输入。用户键盘输入一组范围是1-12的证书作为序号,序号间采用空格分隔,以回车结束。屏幕输出这些序号对应的星座的名称、支付编码以及出生日期范围,每个星座的信息一行。本次屏幕显示完成后,重新回到输入序号的状态。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

参考输入和输出示例格式如下:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

请输入星座序号(例如,5):5 10‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

双子座(9802)的生日是5月21日至6月21日之间‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

天蝎座(9807)的生日是10月24日至11月22日之间‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

请输入星座序号(例如,5):

fi=open('PY301-SunSign.csv','r',encoding='utf-8')
ls = []
num=input('请输入星座序号(例如,5):')
while num:lst=num.split(' ')for m in fi:ls.append(m.strip('\n').split(','))for n in range(len(ls)):for k in lst:if ls[n][0]==k:print("{}({})的生日是{}月{}日至{}月{}日之间".format(ls[n][1],ls[n][-1],ls[n][2][:-2],ls[n][2][-2:],ls[n][3][:-2],ls[n][3][-2:]))num=input('请输入星座序号(例如,5):')

这一问的一个难点就是while使用,用来实现上一次输出结束后,又回到新的输入状态。我们可以把while的条件干脆定义成num这个输入的值,这样如果啥也不输,它就结束了,就没有下一次了。如果输了值,就会进入下一次循环。然后剩下遍历搜索的思路和框架都和第一问如出一辙。

第三问:在第二问基础上加上输入出错提示

问题3(5分):在问题2的基础上,在编程模板 文件中修改代码,对键盘输入的每个序号做合法性处理。如果输入的数字不合法,请输出“输入星座编号有误!”,继续输出后续信息,然后重新回到输入序号的状态。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

参考输入和输出示例格式如下:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

请输入星座序号(例如,5):5 14 11‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

双子座(9802)的生日是5月21日至6月21日之间‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

输入星座序号有误!‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

射手座(9808)的生日是11月23日至12月21日之间‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

请输入星座序号(例如,5):

fi=open('PY301-SunSign.csv','r',encoding='utf-8')
ls = []
num=input('请输入星座序号(例如,5):')
for m in fi:ls.append(m.strip('\n').split(','))
while num:lst=num.strip('\n').split(' ')    for k in lst:if 0<int(k)<len(ls):for n in range(len(ls)):if ls[n][0]==k:print("{}({})的生日是{}月{}日至{}月{}日之间".format(ls[n][1],ls[n][-1],ls[n][2][:-2],ls[n][2][-2:],ls[n][3][:-2],ls[n][3][-2:]))else:print('输入星座序号有误!')num=input('请输入星座序号(例如,5):')

这里有几个需要提醒的点:

  1. 一定是先遍历用户输入的那个列表,再遍历文件的那个列表。不然的话就会出现输出和输入对不上顺序。
  2. else代码块放在第一个if对应的下头,表示如果输入的值超过12,就是有误的。注意判断语句位置,放在k遍历的下面。

【Python二级等考大题】星座三问相关推荐

  1. 计算机组成原理常考大题合集

    计算机组成原理常考大题合集 1.在"Cache-主存-辅存"三级存储体系中,"Cache-主存"结构与"主存-辅存"结构的引入为了解决什么问 ...

  2. 软件设计师 软考 真题练习 (三)

    软件设计师 软考 真题练习 (三) 以下关于散列表(哈希表),及其查找特点的叙述中,正确的是 A.在散列表中进行查找时,只需要与待查找关键字及其同义词进行比较 B.只要散列表的装填因子不大于1/2,就 ...

  3. 2020年高教社杯全国大学生数学建模竞赛C题 第三问详细解答+代码

    2020年高教社杯全国大学生数学建模竞赛C题 第三问详细解答+代码 本文摘自小编自己的参赛论文与经历,小编获得了2020年高教社杯国奖,有问题的同学们可私聊博主哦. 问题 三: 增加企业抗突发因素能力 ...

  4. 【备考】计算机python二级过考指南(考点+典例)

    python操作题题型分类整理:Python计算机二级过考指南_一只自力更生的芋圆的博客-CSDN博客_输入一个非空字符串此条整理Python计算机二级等级考试的程序设计题,但也基本包含了大部分Pyt ...

  5. python二级值得考吗_来自python二级考试的吐槽

    ennnnnn,终于盼到3月,终于开始了满怀期待的计算机等级考试,来,咱们点开试题看看里面有什么吧 ......................... en ..................... ...

  6. 全国计算机等级考试——二级JAVA完整大题题库【五十三道】

    全国计算机等级考试二级 JAVA 题目内容 编写于2023.04.10 分为40道选择题和3道大题(大题是程序填空类型) 其中选择题只能进去做一次,一旦退出来则不可再进(注意!).大题可以重复进入,重 ...

  7. Python二级必考函数.format()函数

    目录 一.format()函数介绍 二.函数运用 ①位置填充 ②填充物(fill).对齐(align).宽度(width) ③sign参数保留正负号 ④指定精度(.nf).分隔符(,).进制(o,b, ...

  8. 软考大题做题技巧——数据流图、数据库E-R图、UML、算法、设计模式(干货!)

    小编在软考最后一周,破釜沉舟的学习软考的大题,找到了一些大题的做题技巧,特此分享给大家,希望所有参加软考的同学都能尽自己百分百的努力,收获最好的结果. 做题时可以重点找一下每类问题考察的考点以及提问问 ...

  9. 2021国赛A题第三问 - 点关于三维直线的对称点 - 入射光的反射向量

    点关于三维向量的对称点 - 入射光的反射向量 点关于过原点三维直线的对称点 入射光的反射向量的方向向量 思路 前几天做数学建模国赛发现第三问用到了入射光线反射问题的求解,当时没有找到现成的公式,仅仅是 ...

最新文章

  1. 白鹭 修改底层 egret.js 库后再次编译 成 新的库
  2. MapReduce-流量统计求和-排序-Mapper和Reducer编写
  3. C#里Attribute属性
  4. BZOJ1050 [HAOI2006]旅行
  5. linux卸载docker redis,【Docker】Redis在docker上的安装、启动、停止、删除操作
  6. 160 - 44 defiler.1.exe
  7. react(91)--debugger
  8. mysql主从 单点_MySQL主从复制虽好,能完美解决数据库单点问题吗?
  9. jdk自带4种多线程创建方式
  10. MFC动态菜单全攻略
  11. RFID天线—1.阻抗测量方法
  12. Perlin noise(一)
  13. mac 安装 android 系统,苹果电脑Mac系统如何安装Android模拟器?
  14. 如何实现EXCEL图表曲线纵坐标不从0开始
  15. php自学笔记四扫雷完成
  16. Servlet技术(第三章)
  17. android没有adm_求助 Android studio的ADM打不开是什么原因
  18. 公网SSH远程连接Ubuntu【免费内网穿透】
  19. 淘宝商品信息爬取(已登录)
  20. laya 学习抛出事件与接收事件

热门文章

  1. reportlab 页脚和页眉的使用
  2. Driver的prob的调用顺序
  3. 企业实施单元测试现状调查(浙江大学管理学院 李云)
  4. 语法数学一点不会?可以学编程吗QAQ
  5. Android OpenGLES滤镜开发之仿抖音灵魂出窍
  6. MOOC《程序设计入门——C语言》
  7. 减盐不减味,乌江榨菜掀起轻盐升级革命
  8. linux sas hba,详谈RAID功能和SAS HBA系列产品
  9. 神兵利器 nth_element
  10. iframe 接班人-微前端框架 qiankun 在中后台系统实践