标签:
题目:
1、写一个程序,判断2008年是否是闰年。
2、写一个程序,用于计算2008年10月1日是这一年的第几天?(2008年1月1日是这一年的第一天)
3、(文件题)有一个“record.txt”的文件,内容如下:
# name, age, score tom, 12, 86 Lee, 15, 99 Lucy, 11, 58 Joseph, 19, 56
第一栏为姓名(name),第二栏为年纪(age),第三栏为得分(score)
现在,写一个Python程序,
1)读取文件
2)打印如下结果:
得分低于60的人都有谁?
谁的名字以L开头?
所有人的总分是多少?
3)姓名的首字母需要大写,该record.txt是否符合此要求? 如何纠正错误的地方?
4、(练习正则表达式)有一个文件,文件名为output_1981.10.21.txt 。下面使用Python: 读取文件名中的日期时间信息,并找出这一天是周几。将文件改名为output_YYYY-MM-DD-W.txt (YYYY:四位的年,MM:两位的月份,DD:两位的日,W:一位的周几,并假设周一为一周第一天)
以下是程序清单:
1 #-*-coding:utf-8 -*- 2 3 # (1) judge leap year 4 def judge_leap_year(n): 5 # if n%4 == 0 and n%100 != 0: 6 # return True 7 # if n%100 == 0 and n%400 == 0: 8 if (n%4 == 0 and n%100 != 0) or (n%100 == 0 and n%400 == 0): 9 return True 10 else: 11 return False 12 13 # =================================================================== 14 # (2) computing the sum days of any day(**.**.**) 15 def compute_year_counts(datestr): 16 # deal with these case: 17 # 2012.12.2 18 # 2012/12/2 19 # 2012-12-2 20 if datestr.find(‘.‘) > 0: date = datestr.split(‘.‘) 21 if datestr.find(‘/‘) > 0: date = datestr.split(‘/‘) 22 if datestr.find(‘-‘) > 0: date = datestr.split(‘-‘) 23 24 year = int(date[0]) 25 month = int(date[1]) 26 day = int(date[2]) 27 if (month < 1 or month > 12): 28 print "the error month!" 29 return -1 30 if (day > 31): 31 print "the error day!" 32 return -1 33 34 days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] 35 36 # nDays = 0 37 # i = 1 38 # while i < month: 39 # nDays += days[i-1] 40 # i = i + 1 41 nDays = sum(days[i] for i in range(0, month - 1)) 42 if (judge_leap_year(year)): 43 nDays += 1 44 return nDays + day 45 46 datestring = raw_input("input the datetime info:-->") 47 print compute_year_counts(datestring) 48 49 # =================================================================== 50 # (3) read and write file: use class if perfect! 51 class UserProfier(object): 52 def __init__(self, name, age, score): 53 self.name = name 54 self.age = age 55 self.score = score 56 57 def read_file_and_anlysis(filetext): 58 line_read = [] 59 user_scores = [] 60 has_invalid_name = False #the invalid name 61 62 for line in filetext: 63 if not line.startswith(‘#‘) and len(line.strip()) != 0: 64 if line[0].islower(): 65 line = line[0].upper() + line[1:] 66 has_invalid_name = True 67 cur = line.strip().split(‘, ‘) 68 user_scores.append(UserProfier(cur[0], int(cur[1]), int(cur[2]))) 69 line_read.append(line) 70 # print the file 71 print "print the file" 72 for i in line_read: 73 print i 74 # statistic the score < 60 75 print "users whose score lower 60:" 76 for scores in filter(lambda s: s.score < 60 , user_scores): 77 print scores.name 78 # statistic the begin of name which is ‘L‘ 79 print "users whose name‘s begin is ‘L‘:" 80 for names in filter(lambda s: s.name.startswith(‘L‘), user_scores): 81 print names.name 82 # statistic the total scores of all one 83 print "the total scores of everyone:" 84 allscores = map(lambda s:s.score, user_scores) 85 print allscores 86 print reduce(lambda x, y: x+y, allscores, 0) 87 88 # open the file 89 with open("record.txt") as f: 90 read_file_and_anlysis(f) 91 92 # =================================================================== 93 # (4) the useful example of regular expression 94 import os, re, datetime 95 96 filename = "output_1981.10.21.txt" 97 98 date_time = re.search("(?P<year>\d{4})\.(?P<month>\d{2})\.(?P<day>\d{2})\.", filename) 99 100 year = date_time.group(‘year‘) 101 month = date_time.group(‘month‘) 102 day = date_time.group(‘day‘) 103 104 print year, month, day 105 date = datetime.date(int(year), int(month), int(day)) 106 w = date.weekday() + 1 107 W = str(w) 108 os.rename(filename, "output_"+year+‘-‘+month+‘-‘+day+‘-‘+str(w)+".txt")
标签:
原文地址:http://www.cnblogs.com/bakari/p/4213039.html