AP计算机科学A(APcomputer science A)复习备考攻略视频教程
42651 人在学
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\\d{4})\\.(?P\\d{2})\\.(?P\\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")
共8节 · 1小时32分钟
¥10.0011940人在学
共74节 · 19小时37分钟
¥39.992851人在学
共28节 · 7小时41分钟
¥399.001543人在学
共19节 · 5小时21分钟
¥399.001616人在学