《Python程序设计》习题与答案 下载本文

x[0:10] = y y = x[10:20]

y.sort(reverse=True) x[10:20] = y print x

2.6 在Python中,字典和集合都是用一对 大括号 作为定界符,字典的每个元素有两部分组成,即 键 和 值 ,其中 键 不允许重复。

2.7 假设有列表a = ['name','age','sex']和b = ['Dong',38,'Male'],请使用一个语句将这两个列表的内容转换为字典,并且以列表a中的元素为键,以列表b中的元素为值,这个语句可以写为 c = dict(zip(a,b))。

2.8 假设有一个列表a,现要求从列表a中每3个元素取1个,并且将取到的元素组成新的列表b,可以使用语句 b = a[::3]。

2.9 使用列表推导式生成包含10个数字5的列表,语句可以写为 [5 for i in range(10)]。 2.10 不可以 (可以、不可以)使用del命令来删除元组中的部分元素。

第3章 选择结构与循环结构

3.1 分析逻辑运算符“or”的短路求值特性。 答:

假设有表达式“表达式1 or 表达式2”,如果表达式1的值等价于True,那么无论表达式2的值是什么,整个表达式的值总是等价于True。因此,不需要再计算表达式2的值。

3.2 编写程序,运行后用户输入4位整数作为年份,判断其是否为闰年。如果年份能被400整除,则为闰年;如果年份能被4整除但不能被100整除也为闰年。

答:

1)Python 3.4.2代码

x = input('Please input an integer of 4 digits meaning the year:') x = eval(x)

if x@0==0 or (x%4==0 and not x0==0): print('Yes') else:

print('No')

2)Python 2.7.8代码

x = input('Please input an integer of 4 digits meaning the year:') if x@0==0 or (x%4==0 and not x0==0): print 'Yes' else:

print 'No'

3.3 编写程序,生成一个包含50个随机整数的列表,然后删除其中所有奇数。(提示:从后向前删。)

答:

1)Python 3.4.2代码

import random

x = [random.randint(0,100) for i in range(50)] print(x) i = len(x)-1 while i>=0:

if x[i]%2==1:

del x[i] i-=1 print(x)

2)Python 2.7.8代码

把上面的代码中第三行和最后一行改为print x即可。

34 编写程序,生成一个包含20个随机整数的列表,然后对其中偶数下标的元素进行降序排列,奇数下标的元素不变。(提示:使用切片。)

答:

1)Python 3.4.2代码

import random

x = [random.randint(0,100) for i in range(20)] print(x) y = x[::2]

y.sort(reverse=True) x[::2] = y print(x)

2)Python 2.7.8代码

把上面的代码中第三行和最后一行改为print x即可。

35 编写程序,用户从键盘输入小于1000的整数,对其进行因式分解。例如,10=2×5,60=2×2×3×5。

答:

1)Python 3.4.2代码

x = input('Please input an integer less than 1000:') x = eval('x') t = x i = 2

result = [] while True: if t==1: break if t%i==0:

result.append(i) t = t/i else:

i+=1

Print x,'=','*'.join(map(str,result))

2)Python 2.7.8代码

x = input('Please input an integer less than 1000:') t = x i = 2

result = [] while True: if t==1: break if t%i==0:

result.append(i) t = t/i else:

i+=1

print x,'=','*'.join(map(str,result))

3.6 编写程序,至少使用2种不同的方法计算100以内所有奇数的和。

答:Python 3.4.2代码如下,如果使用Python 2.7.8只需要把其中的print()函数改为print语句即可。

x = [i for i in range(1,100) if i%2==1] print(sum(x))

print(sum(range(1,100)[::2]))

3.7 编写程序,实现分段函数计算,如下表所示。

x x<0 0<=x<5 5<=x<10 10<=x<20 20<=x y 0 x 3x-5 0.5x-2 0 答:Python 3.4.2代码如下,如果使用Python 2.7.8只需要把其中的print()函数改为print语句即可。