【Python二级等考大题】星座三问
问题描述
代码框中给出的代码是提示代码,你可以局部修改,或者全部删除重写。
本题对应三个问题,请按照文件内说明修改代码,实现以下功能:
二千多年前希腊的天文学家希巴克斯命名十二星座,它们是水瓶座、双鱼座、白羊座、金牛座、双子座、巨蟹座、狮子座、处女座、天秤座、天蝎座、射手座、魔蝎座。给出一个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):')
这里有几个需要提醒的点:
- 一定是先遍历用户输入的那个列表,再遍历文件的那个列表。不然的话就会出现输出和输入对不上顺序。
- else代码块放在第一个if对应的下头,表示如果输入的值超过12,就是有误的。注意判断语句位置,放在k遍历的下面。
【Python二级等考大题】星座三问相关推荐
- 计算机组成原理常考大题合集
计算机组成原理常考大题合集 1.在"Cache-主存-辅存"三级存储体系中,"Cache-主存"结构与"主存-辅存"结构的引入为了解决什么问 ...
- 软件设计师 软考 真题练习 (三)
软件设计师 软考 真题练习 (三) 以下关于散列表(哈希表),及其查找特点的叙述中,正确的是 A.在散列表中进行查找时,只需要与待查找关键字及其同义词进行比较 B.只要散列表的装填因子不大于1/2,就 ...
- 2020年高教社杯全国大学生数学建模竞赛C题 第三问详细解答+代码
2020年高教社杯全国大学生数学建模竞赛C题 第三问详细解答+代码 本文摘自小编自己的参赛论文与经历,小编获得了2020年高教社杯国奖,有问题的同学们可私聊博主哦. 问题 三: 增加企业抗突发因素能力 ...
- 【备考】计算机python二级过考指南(考点+典例)
python操作题题型分类整理:Python计算机二级过考指南_一只自力更生的芋圆的博客-CSDN博客_输入一个非空字符串此条整理Python计算机二级等级考试的程序设计题,但也基本包含了大部分Pyt ...
- python二级值得考吗_来自python二级考试的吐槽
ennnnnn,终于盼到3月,终于开始了满怀期待的计算机等级考试,来,咱们点开试题看看里面有什么吧 ......................... en ..................... ...
- 全国计算机等级考试——二级JAVA完整大题题库【五十三道】
全国计算机等级考试二级 JAVA 题目内容 编写于2023.04.10 分为40道选择题和3道大题(大题是程序填空类型) 其中选择题只能进去做一次,一旦退出来则不可再进(注意!).大题可以重复进入,重 ...
- Python二级必考函数.format()函数
目录 一.format()函数介绍 二.函数运用 ①位置填充 ②填充物(fill).对齐(align).宽度(width) ③sign参数保留正负号 ④指定精度(.nf).分隔符(,).进制(o,b, ...
- 软考大题做题技巧——数据流图、数据库E-R图、UML、算法、设计模式(干货!)
小编在软考最后一周,破釜沉舟的学习软考的大题,找到了一些大题的做题技巧,特此分享给大家,希望所有参加软考的同学都能尽自己百分百的努力,收获最好的结果. 做题时可以重点找一下每类问题考察的考点以及提问问 ...
- 2021国赛A题第三问 - 点关于三维直线的对称点 - 入射光的反射向量
点关于三维向量的对称点 - 入射光的反射向量 点关于过原点三维直线的对称点 入射光的反射向量的方向向量 思路 前几天做数学建模国赛发现第三问用到了入射光线反射问题的求解,当时没有找到现成的公式,仅仅是 ...
最新文章
- 白鹭 修改底层 egret.js 库后再次编译 成 新的库
- MapReduce-流量统计求和-排序-Mapper和Reducer编写
- C#里Attribute属性
- BZOJ1050 [HAOI2006]旅行
- linux卸载docker redis,【Docker】Redis在docker上的安装、启动、停止、删除操作
- 160 - 44 defiler.1.exe
- react(91)--debugger
- mysql主从 单点_MySQL主从复制虽好,能完美解决数据库单点问题吗?
- jdk自带4种多线程创建方式
- MFC动态菜单全攻略
- RFID天线—1.阻抗测量方法
- Perlin noise(一)
- mac 安装 android 系统,苹果电脑Mac系统如何安装Android模拟器?
- 如何实现EXCEL图表曲线纵坐标不从0开始
- php自学笔记四扫雷完成
- Servlet技术(第三章)
- android没有adm_求助 Android studio的ADM打不开是什么原因
- 公网SSH远程连接Ubuntu【免费内网穿透】
- 淘宝商品信息爬取(已登录)
- laya 学习抛出事件与接收事件