一、单选
1.下面选项说法错误的是 A
A. 函数可以不传参数,但必须有返回值(可以有也可以没有,没有return时是隐匿return 返回值是None)
B.函数的参数个数是不固定的(可变参数)
C.函数实现了代码的封装
D.函数的返回值可以不用赋值
2.关于面向对象的三大特性说法错误的是 A
A.这种用法与函数的用法一样
B.三大特性指封装、继承、多态、面对对象
C.这三大特性能够更好的帮助开发者进行快速开发
D.一个类可以继承父类中的特性
3.下列关于linux命令说法正确的是 B
A. touch可以修改文件内容 (创建文件命令)
B. rm可以删除文件
C. mv是拷贝文件 (移动、剪切文件命令,复制是cp)
D. reboot是关机命令 (是重启命令 ,关机是poweroff)
4.下列描述中正确的是 A
A. 协程是依赖于线程的 (协程是一个线程的执行) 进线协
B. 线程不依赖进程
C. 线程之间必须要用queue才能通信(只是其中之一)
D. 协程占用资源最大
5.已知x = [1,2,3], 执行语句x.append(4)之后,x的值为什么 A
A. [1,2,3,4]
B. [4]
C. [1,2,3]
D. 4
6.下列说法不正确的是 D
A. 函数内部定义的局部变量当函数调用结束后被自动删除
B. pass表示的是空语句
C. 列表对象的pop()方法默认删除并返回最后一个元素,没有则抛出异常
D. 面向对象中类是可以直接使用的(有需要实例化和不需要实例化的)类
7.正则表达式中.*?能匹配多少字符 D
A. 有多少匹配多少
B. 1 个
C. 0 个
D. 满足要求的个数
8.以下关于 Python 字符串的描述中,错误的是 C
A. 字符串是字符的序列,可以按照单个字符或者字符片段进行索引
B. 字符串包括两种序号体系:正向递增和反向递减
C. Python 字符串提供区间访问方式,采用 [N:M] 格式,表示字符串中从 N 到 M 的索引子字符串(包含 N 和 M)(正向是左闭右开)
D. 字符串是用一对双引号" "或者单引号’ '括起来的零个或者多个字符
9.关于Python的全局变量和局部变量,以下选项中描述错误的是 A
A. 局部变量指在函数内部使用的变量,当函数退出时,变量依然存在,下次函数调用可以继续使用
B. 使用global保留字声明简单数据类型变量后,该变量作为全局变量使用
C. 简单数据类型变量无论是否与全局变量重名,仅在函数内部创建和使用,函数退出后变量被释放
D. 全局变量指在函数之外定义的变量,一般没有缩进,在程序执行全过程有效
10.下面代码的输出结果是()A
print( 0.1 + 0.2 == 0.3)
A. False (float类型,结果是近似值)
B. –1
C. 0
D. True (print(1+2==3))
11.ls = [3.5, “Python”, [10, “LIST”], 3.6],ls[2][ –1][1]的运行结果是 B
A. P
B. I
C. Y
D. L
12.关于Python语句P = –P,以下选项中描述正确的是()C
A. P和P的负数相等
B. P和P的绝对值相等
C. 给P赋值为它的负数
D. P的值为0
13.下列说法中不正确的是 A
A. 函数不能被当做模块进行导入 (可以导入包,模块,方法等)
B. 面向对象是专门用来应对复杂开发的编程方式
C. 一个.py结尾的可以当做模块进行导入
D. 面向对象对于函数是一个更大的封装
14.给出如下代码:D
DictColor = {“seashell”:“海贝色”,“gold”:“金色”,“pink”:“粉红色”,“brown”:“棕色”, “purple”:“紫色”,“tomato”:“西红柿色”}
以下选项中能输出“海贝色”的是
A. print(DictColor.keys())
B. print(DictColor[“海贝色”])
C. print(DictColor.values())
D. print(DictColor[“seashell”])
15.以下关于字典类型的描述,正确的是 D
A. 字典类型可迭代,即字典的值还可以是字典类型的对象 (因果倒置)
B. 表达式 for x in d: 中,假设d是字典,则x是字典中的键值对 (只是键值)
C. 字典类型的键可以是列表和其他数据类型 (键具有唯一性,不可变)
D. 字典类型的值可以是任意数据类型的对象
16.下面代码的输出结果是()D
s =[“seashell”,“gold”,“pink”,“brown”,“purple”,“tomato”]
print(s[1:4:2]) A. [‘gold’, ‘pink’, ‘brown’]
B. [‘gold’, ‘pink’]
C. [‘gold’, ‘pink’, ‘brown’, ‘purple’, ‘tomato’]
D. [‘gold’, ‘brown’]
17.关于Python循环结构,以下选项中描述错误的是 C
A. 遍历循环中的遍历结构可以是字符串、文件、组合数据类型和range()函数等
B. break用来跳出最内层for或者while循环,脱离该循环后程序从循环代码后继续执行
C. 每个continue语句只有能力跳出当前层次的循环 (当前档次循环)
D. Python通过for、while等保留字提供遍历循环和无限循环结构
18.以下程序的输出结果是()D
for i in reversed(range(10, 0, -2)):(reversed 反转)
print(i,end=" ")
A. 0 2 4 6 8 10
B. 12345678910
C. 9 8 7 6 5 4 3 2 1 0
D. 2 4 6 8 10
19.字符串 s = “I love Python”,以下程序的输出结果是()D
s = “I love Python”
ls = s.split()
ls.reverse()
print(ls)
A. ‘Python’, ‘love’, ‘I’
B. Python love I
C. None
D. [‘Python’, ‘love’, ‘I’]
20.关于程序的异常处理,以下选项中描述错误的是 B
A. 程序异常发生经过妥善处理可以继续执行
B. 编程语言中的异常和错误是完全相同的概念
C. 异常语句可以与 else 和 finally 保留字配合使用
D. Python 通过 try、except 等保留字提供异常处理功能
二、代码题:
21.
题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方
li=[]
for i in range(100,1000):
g=i%10
s=i//10%10
b=i//100
if g**3+s**3+b**3==i:
li.append(i)
print(f'水仙花数为:{li}')
22.题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
#方法一
li=['x','y','z']
for a in li:
if a!='x':
for c in li:
if c!='x' and c!='z' and a!=c:
for b in li:
if a!=b and c!=b:
print(f'比赛名单为:a:{a},b:{b},c:{c}')
# 方法二
a=set(['x','y','z'])
b=set(['x','y','z'])
c=set(['x','y','z'])
a-=set('x')
c-=set(['x','z'])
for i in a:
for k in b:
if i!=k:
for j in c:
if i!=j and k!=j:
print(f'比赛名单为:a:{i},b:{k},c:{j}')
23.题目:求1+2!+3!+…+20!的和。
#方法一
n1=1
sum=0
for i in range(1,21):
n1*=i
sum+=n1
print('1+2!+3!+...+20!和为:{}'.format(sum))
#方法二
def jc(n):
if n==1:
return 1
return n*jc(n-1)
sum=0
for i in range(1,21):
sum+=jc(i)
print(f"1+2!+3!...+20!和为:{sum}")
24.判断有效日期
用户可以输入"20170327"等三种格式的日期
判断是否是有效日期,如"20170229"不是有效日期,
"20171345"不是有效日期
while True:
userI=input('请输入你的日期,q键退出 (如:20170302 样式):')
if userI=='q':
break
elif len(userI)==8:
year=int(userI[:4])
mon=int(userI[4:6])
data=int(userI[6:8])
else:
print('请重新输入')
continue
if year >1000:
if mon in [1,3,5,7,8,10,12]:
if data<=31:
print('此日期为有效日期')
else:
print('此日期为无效日期')
elif mon in [4,6,9,11]:
if data<=30:
print('此日期为有效日期')
else:
print('此日期为无效日期')
elif mon==2:
if year % 400 == 0 or (year % 4 == 0 and year % 100 != 0):
if data <= 29:
print('此日期为有效日期')
else:
print('此日期为无效日期')
else:
if data<=28:
print('此日期为有效日期')
else:
print('此日期为无效日期')
else:
print('月份有误,请检查你的月份')
else:
print('年份有误,请检查你的年份')
25.题目:利用递归方法求5!
#方法一
def jc(n):
if n==1:
return 1
return n*jc(n-1)
print(jc(5))
#方法二
n1=1
for i in range(1,6):
n1*=i
print(n1)
26.使用while,完成以下图形的输出。(每一行的星星不能用*乘以星星的数量来完成,须使用while嵌套)(较难)
#方法一
#确定每行打印个数
li=[]
s=0
n=int(input('请输入总层数(为奇数层):'))
s = n // 2 + 1
for i in range(0,n):
if s+i<=n:
li.append(s+i)
elif n+s-i-1>=s:
li.append(n+s-i-1)
# print(li)
# 打印
for i in range(0,n):
for j in range(1,li[i]+1):
if j<= abs(i-s+1):
print(' ',end='')
else:
print('*',end='')
print()
27.完成字符串的逆序以及统计。
设计一个程序,
要求只能输入长度低于31的字符串,否则提示用户重新输入,
打印出字符串长度,使用切片逆序打印出字符串
while True:
str1=input('请输入字符串(q键退出)')
if str1=='q':
break
elif len(str1)<31:
print('字符串长度:{},逆序为:{}'.format(len(str1),str1[::-1]))
else:
print('请重新输入!')
28.定义函数findall,实现对字符串find方法的进一步封装,要求返回符合要求的所有位置的起始下标,
如字符串"helloworldhellopythonhelloc++hellojava",需要找出里面所有的"hello"的位置,
最后将返回一个元组(0,10,21,29),即将h的下标全部返回出来,而find方法只能返回第一个
#重新定义findall
#方法一
def findall(s,f):
li = []
id = 1
if f in s:
s=s.replace(f'{f}','@')
for i in range(len(s)):
if s[i]=='@':
if li==[]:
li.append(i)
else:
li.append(i+(len(f)-1)*id)
id+=1
print(tuple(li))
else:
print(f'此字符串中没有{f}')
s,f=input("请输入元字符串与要查找的字符(以’,‘隔开):").split(',')
# print(findall(s,f))
findall(s,f)
#方法二
def findall(s,f):
if f in s:
li=[]
while True:
if li==[]:
index=s.find(f'{f}')
li.append(index)
else:
index = s.find(f'{f}', index + 1)
if index == -1:
break
else:
li.append(index)
print(tuple(li))
else:
print(f'此字符串中不存在{f}')
s,f=input('请输入字符串(用,隔开):').split(',')
findall(s,f)
29.题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字
# 一个不多于5位的正整数,求他是几位数,并打印出各位数字
while True:
str1=input('请输入一个长度小于5位的正整数数(q键退出):')
if str1=='q':
break
elif len(str1)<=5:
print(f'它是一个{len(str1)}数,逆序:{str1[::-1]}')
else:
print('请重新输入!')
30.题目:打印出杨辉三角形(要求打印出10行如下图)。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
# 杨辉三角
n=int(input('请输入行数:'))
li = [1, 1]
for i in range(n):
if i==0:
print('1')
elif i==1:
print('1 1')
else:
li1 = []
for j in range(len(li)-1):
li1.append(li[j]+li[j+1])
li=[1]+li1+[1]
print(' '.join([str(i) for i in li]))
方法二
def yhs(n):
print(''.join('1'))
li1=[1,1]
print(' '.join(map(str,li1))) #将列表转换为字符串
for i in range(2,n):
li=[]
for j in range(0,len(li1)-1):
li.append(li1[j]+li1[j+1])
li1=[1]+li+[1]
print(' '.join([str(i) for i in li1]))
yhs(10)