单项选择题
2-1 下面有关字典的定义中,错误的是( )。
A. d={"中国":"北京", "法国":"巴黎", "美国":"华盛顿"}
B. d={[1]:"北京", [ 3]:"巴黎",[ 2]:"华盛顿"}
C. d={"中国":"北京", "中国":"长安", "美国":"华盛顿"}
D. d={"中国":"北京", "首都":"北京", "美国":"华盛顿"}
答案:B
2-2 创建一个集合{0,1,2,3,4,5},下面()是正确的。
A. set(0,1,2,3,4,5)
B. set("0,1,2,3,4,5")
C. set("012345")
D. set(range(6))
答案:D
2-3 已知x是一个列表,则以下选项中,不能访问列表最后一个元素的是()。
A. x[-1] B. x[len(x)-1] C. x[-1:] D. x[-1:-2]
答案:D
2-4 以下哪个指令能建立一个集合( )。
A. {} B. set(8) C. {8} D. set(2,3)
答案:C
2-5 返回集合中元素个数的函数是______。
A. size() B. len() C. elements() D. count()
答案:B
2-6 已知d={1 : 2, '3' : 4},下列修改字典的方式中,错误的是()
A. d.update({3:1})
B. d[3]=1
C. d['3']=1
D. d.get('3')=1
答案:D
2-7 对于字典dic={1:2, '3': 'd', 'd':2, 4:{1:2, 2:3} }, len(dic)的值是()
A. 3 B. 4 C. 5 D. 6
答案:B
多项选择题
3-1 已知:x=[1,2,3],y=[4,5,6],欲生成新列表x=[1,2,3,4,5,6],则下面的操作哪种方案可行?( )
A. x+=y或者x=x+y
B. x.extend(y)
C. x=x.__add__(y)
D. x=x.append(y)
答案:A B
3-2 已知:
A.
n['Q']=a.get('Q')+b.get('Q')
B.
n['Q']=n.get('Q')+a.get('Q')+b.get('Q')
C.
n['Q']=n.get('Q',0)+a.get('Q')+b.get('Q')
D.
n['Q']=n.get('Q',0)+a.get('Q')
n['Q']=n.get('Q',0)+b.get('Q')
答案:A C D
3-3 下面语句运行结果是True的是( )
A. 2 in set(range(6))
B. 2 in list(range(6))
C. 2 in range(6)
D. 2 in set("123456")
答案:A B C
填空题
4-1 字典的创建,元素访问及名字绑定(高教社,《Python编程基础及应用》习题7-2)
请写出下述程序的执行结果:
phoneBook = {'Alex':'6511-2002','Betty':'6512-7252','Dora':'6546-2708'}
phoneBook2 = phoneBook
phoneBook2['Betty'] = '1111-2222'
print(phoneBook['Betty'])
print(phoneBook2['Betty'])
执行结果第1行:( )
执行结果第2行:( )
答案
第1空:1111-2222
,第2空:1111-2222
4-2 元组的编辑(高教社,《Python编程基础及应用》习题5-2)
写出下述程序的执行结果。
t = (2,4,6,8,10)
print(t[0])
print(t[-1])
print(t[:-1])
print(t[1:-1])
print(max(t))
print(len(t))
结果第1行:( )
结果第2行:( )
结果第3行:( )
结果第4行:( )
结果第5行:( )
结果第6行:( )
答案
第1空:2
,第2空:10
,第3空:(2, 4, 6, 8)
,第4空:(4, 6, 8)
,第5空:10
,第6空:5
4-3 下面语句的输出是什么?( )@@[](2)
D1={"red":41,"blue":3}
D2={"blue":3,"red":41}
print(D1==D2)
答案
第1空:True
4-4 表达式{1,2,3}-{2,3,4}的值是( )@@[](1) 。
答案
第1空:{1}
编程题
7-1 sdut-统计字符在字符串中出现的次数
统计并输出某给定字符在给定字符串中出现的次数。
输入格式:第一行给出一个以回车结束的字符串(一行少于80个字符);第二行输入一个字符。
输出格式:在一行中输出给定字符在给定字符串中出现的次数。(如果未出现,则输出0)
输入样例:
programming is More fun!
m
输出样例:
2
参考答案
基本写法
lst, s, n = list(input()), input(), 0
for i in lst:
if i == s:
n += 1
print(n)
懒狗写法
s, e = input(), input()
print(s.count(e))
pop+index写法
# 写法一
lst, string, count = list(input()), input(), 0
while True:
try:
position = lst.index(string)
lst.pop(position)
count += 1
except ValueError:
print(count)
break
7-2 求完全数的字典集
本题目要求读入2个正整数m和n,且m<n,求[m,n]之间所有的完全数,并形成字典。完全数:除了自己本身以外所有因子的和等于本身的数。例如6的因子为1,2,3,1+2+3=6,6即为完全数。
输入格式: 以空格分隔输入m,n两个数。
输出格式: 输出得到的字典。
输入样例1:
6 80
输出样例1:
{6: [1, 2, 3], 28: [1, 2, 4, 7, 14]}
输入样例2:
-8 -5
输出样例2:
wrong input
参考答案
import math
def getPerfect(n):
factors = [1]
for j in range(2, int(math.sqrt(n)) + 1):
if (n % j) == 0:
factors.append(j)
if j * j != n:
factors.append(n // j)
if factors:
if int(sum(factors)) == n:
return True, sorted(factors)
return False, None
try:
a, b = map(eval, input().split())
if a > b or a < 0 or b < 0:
raise NameError
except NameError:
print("wrong input")
else:
dic = {}
for current in range(2, 10002, 2):
perfect = getPerfect(current)
if perfect[0]:
dic[current] = perfect[1]
result = {}
# 写法一 取交集
intersection = sorted(list(set(range(a, b)) & set(dic.keys())))
for i in intersection:
result[i] = dic[i]
# 写法二 遍历
# for i in range(a, b):
# if i in dic:
# result[i] = dic[i]
print(result)
7-3 输出星期名缩写
输入一个1到7的数字,输出对应的星期名的缩写。
1 Mon
2 Tue
3 Wed
4 Thu
5 Fri
6 Sat
7 Sun
参考答案
day = "MonTueWedThuFriSatSun"
n = eval(input())
print(day[3 * n - 3:3 * n])