1.写一个函数用来打印通用日历表,即对任何给定的年和月份,能按下图正确打印对应的日历表:
(1)测试普通年份月份情况(大小月);
(2)普通年份二月份情况;
(3)测试闰年年份二月份情况
(4)利用上述函数,输出某个年份所有月份的日历
法1:导入calendar模块
>>> import calendar
>>> yy = int(input("输入年份: "))
输入年份: 2020
>>> mm = int(input("输入月份: "))
输入月份: 2
>>> # 显示日历
print(calendar.month(yy,mm))
February 2020
Mo Tu We Th Fr Sa Su
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29
法2:手敲代码
year = int(input("请输入年份:"))
if((year %4 == 0 and year %100 != 0) or (year % 400 == 0)):run = True
else:run = False #这行也可以不用写
i = 1900
sum = 0
while i < year - 1:
i += 1
if((i % 4 == 0 and i % 100 != 0) or (i % 400 == 0)):sum += 366
else: sum += 365
month = int(input("请输入月份:"))
j = 1
while j < month:
if((j == 1) or (j == 3) or (j == 5) or (j == 7) or (j == 8) or (j == 10) or (j == 12)):sum += 31
elif j == 2:
if run:sum += 29
else: sum += 28
else: sum += 30
j += 1
week = (sum + 1) % 7
if ((month == 1) or (month == 3) or (month == 5) or (month == 7) or (month == 8) or (month == 10) or (month == 12)):day = 31
elif month == 2: #二月的嵌套判断,闰年二月29,平年28
if run:day = 29
else:day = 28
else:day = 30
print("日\t一\t二\t三\t四\t五\t六")
count = 0 #定义一个计数器,以便后面的换行
k = 0
while k <= week: #每个月的开始第一周前面的空格数
k += 1
print("\t",end="")
count += 1
if (count % 7 == 0):print("\n")
# count=7 进行换行
p = 1
while p <= day: #显示天数
print(p,"\t",end="") #打印 table 不换行
p += 1
count += 1
if(count % 7 == 0):print("\n") #count=7 进行换行
2.下面是两张表格,一张表格描述了美国一些县所在的州,一张表格描述了这些县的人口。编写程序,请利用县的名字将两张表合并成一张表。
表state
表population
提示:通过观察,想办法将两个表中县的名字利用统一的规则合并成同一个名字,然后合并两个表。
3.文件lexicon.txt是一些英文单词的发音词典文件:文件的每一行对应一个词条,每一行的第一列对应词本身,后面列对应该单词的发音音素序列。编写一个函数,从lexicon.txt将相关内容读出,放入一个字典结构中,返回该字典结构,并测试peppers和piper的音素序列是否正确。
a ah
a ey
cat k ae t
of ah v
peck p eh k
peppers p eh p er z
peter p iy t er
picked p ih k t
pickled p ih k ah l d
piper p ay p er
the dh ah
the dh iy
where's w eh r z