python二级第四套答案

python二级第四套答案
46、考生文件夹下存在三个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分):在PY301-1.py文件中修改代码,读入CSV文件中数据,获得用户输入。根据用户输入的星座名称,输出此星座的出生日期范围。

参考输入和输出示例格式如下:

请输入星座中文名称(例如,双子座):双子座

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

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

参考输入和输出示例格式如下:

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

双子座(9802)的生日是5月21日至6月21日之间

天蝎座(9807)的生日是10月24日至11月22日之间

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

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

参考输入和输出示例格式如下:

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

双子座(9802)的生日是5月21日至6月21日之间

输入星座序号有误!

射手座(9808)的生日是11月23日至12月21日之间

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

# 以下代码为提示框架
# 请在...处使用一行或多行代码替换
# 请在______处使用一行代码替换
#
# 注意:提示框架代码可以任意修改,以完成程序功能为准

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

# 以下代码为提示框架
# 请在...处使用一行或多行代码替换
#
# 注意:提示框架代码可以任意修改,以完成程序功能为准

f = open('PY301-SunSign.csv','r')
ls = []
ls = f.readlines()
while True:
    s = input('请输入星座序号(例如,5):')
    for i in s.split():
        for line in ls:
            lt = line.strip('\n').split(',')
            if i == lt[0]:
                print("{}({})的生日是{}月{}日至{}月{}日之间".format(lt[1],lt[4],lt[2][:-2],lt[2][-2:],lt[3][:-2],lt[3][-2:]))
f.close()

# 以下代码为提示框架
# 请在...处使用一行或多行代码替换
#
# 注意:提示框架代码可以任意修改,以完成程序功能为准

f = open('PY301-SunSign.csv','r')
ls = []
ls = f.readlines()
while True: 
    s = input('请输入星座序号(例如,5):')
    for i in s.split():
        if 0<int(i)<13:
            flag = True
        else:
            flag = False
        for line in ls:
            lt = line.strip('\n').split(',')
            if i == lt[0]:
                print("{}({})的生日是{}月{}日至{}月{}日之间".format(lt[1],lt[4],lt[2][:-2],lt[2][-2:],lt[3][:-2],lt[3][-2:]))
                break
        if flag == False:
            print("输入星座序号有误!")
f.close()

你可能感兴趣的:(python,java,linux,深度学习,c++)