
法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):')

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/45282.html