《Python程序设计案例教程》-课后习题答案第3章
1. 编写一个名为list_sum的函数,接收一个数字的列表,返回累计和;也就是说,返回一个新的列表,其中第i个元素是原先列表的前i+1个元素的和。例如:
>>> def list_sum(t):
total=0
res=[]
for x in t:
total += x
res.append(total)
return res
>>> t=[1,2,3,4,5]
>>> list_sum(t)
[1, 3, 6, 10, 15]
2. 设计一个字典,并编写程序,用户输入内容作为键,然后输出字典中对应的值,如果用户输入的键不存在,则输出“您输入的键不存在!”
d={1:'a',2:'b',3:'c',4:'d'}
v=input('请输入一个键:')
v=eval(v)
print(d.get(v,'您输入的键不存在'))
3. 编写程序,生成20个0到100随机数的列表,然后将前10个元素升序排列,后10个元素降序排列,并输出结果。
import random
x=[random.randint(0,100) for i in range(20)]
print("原列表:")
print(x)
y=x[0:10]
y.sort()
x[0:10]=y
y=x[10:20]
y.sort(reverse=True)
x[10:20]=y
print("排序后列表:")
print(x)
4. 编写程序,生成包含50个0到10之间的随机整数,并统计每个元素的出现次数。(使用集合)
import random
x=[random.randint(0,10) for i in range(50)]
d=set(x)
for v in d:
print(v,':',x.count(v))
5. 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第十天早上在想吃时,就只剩一个桃子了。求第一天共摘了多少个桃子?
x2=1
for day in range(9,0,-1):
x1=(x2+1)*2
x2=x1
print(x1)
6. 统计2000年至2050年中有多少闰年。
>>> [year for year in range(2000,2050) if (year%4==0 and year%100!=0)or(year%400==0)]
[2000, 2004, 2008, 2012, 2016, 2020, 2024, 2028, 2032, 2036, 2040, 2044, 2048]