确定十二星座的日期范围

在这里插入图片描述

法1:观察日期格式

  • 月份可能是一位数也可能是两位数,但是日期一定是两位数。
序号,星座,开始月日,结束月日,Unicode
1,水瓶座,120,218,9810
2,双鱼座,219,320,9811
3,白羊座,321,419,9800
4,金牛座,420,520,9801
5,双子座,521,621,9802
6,巨蟹座,622,722,9803
7,狮子座,723,822,9804
8,处女座,823,922,9805
9,天秤座,923,1023,9806
10,天蝎座,1024,1122,9807
11,射手座,1123,1221,9808
12,魔蝎座,1222,119,9809
  • 所以可以编写如下代码(书上参考代码):
fo = open("PY301-SunSign.csv", 'r',encoding='UTF-8')
ls = []
for line in fo.readlines():
      ls.append(line.replace("\n", '').split(','))
      # li = line.strip().split(',')
sall = input('请输入星座序号(例如,5 10):')
while sall != '':
      lsNum = sall.split()
      for s in lsNum:
            for i in range(len(ls)):
                  if s == 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:]))
      sall = input('请输入星座序号(例如,5 10):')

法2:通过分支结构判断生日位数

  • 此法仅做参考,过于繁琐,这也是缺乏思考的代价。相较于上面的代码而言,这个代码太繁琐了。
f = open('PY301-SunSign.csv','r',encoding='utf8')
lines = f.readlines()
numbers = input('请输入星座序号(例如,5 10):')

for num in numbers.split():
    for line in lines:
        line = line.strip().split(',')
        if num == line[0]:
            start_m = []
            start_d = []
            end_m = []
            end_d = []
            if len(line[2]) == 3 and len(line[3]) == 3:
                start_m = line[2][:1]
                start_d = line[2][1:]
                end_m = line[3][:1]
                end_d = line[3][1:]
            elif len(line[2]) == 3 and len(line[3]) == 4:
                start_m = line[2][:1]
                start_d = line[2][1:]
                end_m = line[3][:2]
                end_d = line[3][2:]
            elif len(line[2]) == 4 and len(line[3]) == 3:
                start_m = line[2][:2]
                start_d = line[2][2:]
                end_m = line[3][:1]
                end_d = line[3][1:]
            else:
                start_m = line[2][:2]
                start_d = line[2][2:]
                end_m = line[3][:2]
                end_d = line[3][2:]
            print("{}({})的生日是{}月{}日至{}月{}日之间".format(line[1],line[-1],start_m,start_d,end_m,end_d))
numbers = input('请输入星座序号(例如,5 10):')

第三题参考代码

fo = open("PY301-SunSign.csv", 'r',encoding='UTF-8')
ls = []
for line in fo.readlines():
      ls.append(line.replace("\n", '').split(','))
      # li = line.strip().split(',')
sall = input('请输入星座序号(例如,5 10):')
while sall != '':
      lsNum = sall.split()
      for s in lsNum:
          if 1 <= int(s) <=12:
            for i in range(len(ls)):
                  if s == 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("输入星座序号有误!")
      sall = input('请输入星座序号(例如,5 10):')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值