【计算机二级Python】综合题目

计算机二级python真题



在这里插入图片描述


一、简单应用题——年龄统计

描述‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

本题的提示已经在编程模板中给出,其中的代码可以修改,请删除横线 ,补全代码。实现以下功能:‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

键盘输入一组人员姓名、年龄、性别等信息,信息间采用空格分隔,每人一行,空行回车结束录入,示例格式如下:‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

张三 23 男
李四 21 女
王五 18 男

计算并输出这组人员的平均年龄(保留2位小数)和其中男性人数,格式如下:‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

平均年龄是20.67 男性人数是2

data = input()  # 输入“姓名 年龄 性别”
sum_age = 0
man_num = 0
all_num = 0
while data:
    all_num += 1
    ls = data.split()
    sum_age += int(ls[1])
    if ls[2] == '男':
        man_num += 1
    data = input()
avg = sum_age/all_num

print("平均年龄是{:.2f} 男性人数是{}".format(avg, man_num))

二、综合应用题——十二星座日期范围之一

二千多年前希腊的天文学家希巴克斯命名十二星座,它们是水瓶座、双鱼座、白羊座、金牛座、双子座、巨蟹座、狮子座、处女座、天秤座、天蝎座、射手座、摩羯座。给出一个 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 码。 (该题共三问,共计20分,需要用第一问的解答结果求解第二问,用第二问结果求解第三问。本题解答第一问)

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

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

请输入星座中文名称(例如, 双子座):双子座
双子座的生日位于521-621之间

代码1:

fi = open("PY301-SunSign.csv","r",encoding="utf-8")
lines = fi.readlines()
fi.close()

ls = []
for line in lines:
    line = line.replace("\n","")
    ls.append(line.split(","))
s = input("请输入星座中文名称(例如, 双子座):")
for i in range(len(ls)):
    if ls[i][1] == s:
        print("{}的生日位于{}-{}之间".format(ls[i][1],ls[i][2],ls[i][3]))

代码2:

fi = open("PY301-SunSign.csv","r")
lines = fi.readlines()
fi.close()

name = input("请输入星座中文名称(例如,双子座):")
for line in lines:
    ls=line.strip("\n").split(",")
    if name in  ls:
        print("{}的生日位于{}-{}之间".format(ls[1],ls[2],ls[3]))

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

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

请输入星座序号(例如,5 10): 5 10
双子座(9802)的生日是5月21日至6月21日之间
天蝎座(9807)的生日是10月24日至11月22日之间
请输入星座序号(例如,5):

代码 1:

fi = open("D:/Code/PythonCode/PY301-SunSign.csv","r",encoding="utf-8")
lines = fi.readlines()
fi.close()



ls = []
for line in lines:
      ls.append(line.replace("\n", '').split(','))

s = input("请输入星座序号(例如,5):")
nums = s.split()
for num in nums:
    for i in range(len(ls)):
        if num == ls[i][0]:
            print("{}({})的生日是{}月{}日至{}月{}日之间".format(ls[i][1],ls[i][4],ls[i][2][:-2],ls[i][2][-2:],ls[i][3][:-2],ls[i][3][-2:]))

代码 2:

fi = open("D:/Code/PythonCode/PY301-SunSign.csv","r",encoding="utf-8")
lines = fi.readlines()
fi.close()



ls = []
s = input("请输入星座序号(例如,5):")
nums = s.split()
for num in nums:
    ls = lines[eval(num)].split(',')
    print("{}({})的生日是{}月{}日至{}月{}日之间".format(ls[1],ls[4][:-1],ls[2][:-2],ls[2][-2:],ls[3][:-2],ls[3][-2:]))

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

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

请输入星座序号(例如, 5 10): 5 14 11
双子座(9802)的生日是5月21日至6月21日之间
输入星座序号有误!
射手座(9808)的生日是11月23日至12月21日之间
请输入星座序号(例如, 5 10 ):

代码:

fi = open("PY301-SunSign.csv", 'r',encoding='UTF-8')
lines = fi.readlines()
ls = []
for line in lines:
      ls.append(line.replace("\n", '').split(','))
      # li = line.strip().split(',')
s = input('请输入星座序号(例如,5 10):')
while s != '':
      nums = s.split()
      for num in nums:
          if 1 <= int(num) <=12:
            for i in range(len(ls)):
                  if num == ls[i][0]:
                        print("{}({})的生日是{}月{}日至{}月{}日之间".format(ls[i][1],ls[i][4],ls[i][2][:-2],ls[i][2][-2:],ls[i][3][:-2],ls[i][3][-2:]))
          else:
            print("输入星座序号有误!")
      s = input('请输入星座序号(例如,5 10):')

  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

guan12319

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值