python入门精选题计算机二级考试可用.docx
- 文档编号:16745587
- 上传时间:2023-07-17
- 格式:DOCX
- 页数:25
- 大小:248.07KB
python入门精选题计算机二级考试可用.docx
《python入门精选题计算机二级考试可用.docx》由会员分享,可在线阅读,更多相关《python入门精选题计算机二级考试可用.docx(25页珍藏版)》请在冰点文库上搜索。
python入门精选题计算机二级考试可用
Python入门精选30题
考点:
循环结构、分支结构
1、输入一个三位整数,判断这个数是不是“水仙花数”;所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数,例如:
153=1^3+5^3+3^3,153就是水仙花数。
n=eval(input())
i=n
a=0
whilei:
a=a+(i%10)**3
i=i//10
ifa==n:
print("yes")
else:
print("no")
2.随机产生一个两位数的数字,然后用户输入一个两位数的数字,如果用户输入的数字与随机产生的数字完全相同(包括顺序),则输出奖励100分;如果用户输入的数字与随机产生的数字相同(不包括顺序),则输出奖励50分;如果用户输入的数字与随机产生的数字有一位数相同,则奖励10分,如果都不相同,则输入没有奖励。
考点:
产生随机数、取出一个整数各位上的数、分支结构
importrandom
a=random.randint(10,99)
b=eval(input())
a1=a%10
a2=a//10
b1=b%10
b2=b//10
ifa==b:
print('100')
elifa1==b2anda2==b1:
print('50')
elifa1==b1ora2==b2ora1==b2ora2==b1:
print('10')
else:
print('0')
3.在金字塔模式中显示数字(编写一个嵌套for循环来显示下面的输出):
a=eval(input())
foriinrange(a):
考点:
循环结构、制表
ifi==0:
forjinrange(a-i):
print('',end='\t')
print('1',end='')
forjinrange(a-i):
print('',end='\t')
print()
elifi!
=0:
forkinrange(a-i):
print('',end='\t')
forlinrange(0,i+1):
a1=2**l
print(a1,end='\t’)
foryinrange(i-1,-1,-1):
a1=2**y
print(a1,end='\t')
forxinrange(a-i):
print('',end='\t')
print()
考点:
素数、循环结构、分支结构
4、如果一个素数可以写成2^p-1的形式,其中p为一个正整数,那么这个数被称作梅森素数。
编写程序找出所有的p<=31的梅森素数。
defissushu(n):
k=1
foriinrange(2,n):
a=n/i
ifa%1==0:
k=0
returnFalse
ifk==1:
returnTrue
p=1
whilep<=31:
a=(2**p)-1
p+=1
ifissushu(a):
print(a,end='')
5、写一个函数计算下面的数列
考点:
循环结构
defm(n):
s=1
m=0
whiles<=n:
a=s
s=s+1
m=m+(a/s)
returnm
n=eval(input())
print(m(n))
考点:
函数、循环结构、分支结构
6、神奇的Collatz序列。
编写一个名为collatz的函数,它接收一个名为number的整数参数,如果number是偶数,就打印number//2,并返回该值。
否则打印3*number+1并返回。
同时编写主程序,让用户输入一个整数,并不断地调用该函数(用第一次的返回值做第二次的参数,以此类推),直到函数返回1.例如用户输入3则打印输出应为
10
5
16
8
4
2
1
defcollatz(number):
ifnumber%2==0:
a=number//2
print(a)
return(a)
else:
b=number*3+1
print(b)
return(b)
number=eval(input())
while1:
number=collatz(number)
ifnumber==1:
break
7、一个数如果恰好等于它的除自身外的因子之和,这个数就称为“完数”。
例如6=1+2+3,6是完数。
编写程序输出1至1000之间的所有完数。
考点:
完数、print输出格式、循环结构、分支结构
defwanshu(n):
s=0
foriinrange(1,n):
a=n/i
ifa%1==0:
s=s+i
ifs==n:
returnTrue
foriinrange(1,1001,1):
ifwanshu(i):
print(i,end='')
考点:
turtle内置函数
8、使用turtle绘制一个黄色边框的红色五角星。
(五角星的每个内角均为36°)
importturtle
turtle.showturtle
turtle.pensize(5)
turtle.color("yellow","red")
turtle.begin_fill()
foriinrange(5):
turtle.forward(100)
turtle.right(144)
turtle.forward(100)
turtle.end_fill()
turtle.hideturtle
太阳花:
importturtle
turtle.pensize(3)
turtle.speed(10)
turtle.color('yellow','red')
turtle.begin_fill()
foriinrange(30):
turtle.forward(100)
turtle.right(165)
turtle.forward(100)
turtle.end_fill()
9、使用turtle绘制奥运五环(蓝黑红黄绿)
importturtle
turtle.showturtle
turtle.pensize(10)
turtle.speed(10)
turtle.color("black")
turtle.penup()
turtle.goto(0,0)
turtle.pendown()
turtle.circle(100)
turtle.color("blue")
turtle.penup()
turtle.goto(-250,0)
turtle.pendown()
考点:
turtle内置函数
turtle.circle(100)
turtle.color("red")
turtle.penup()
turtle.goto(250,0)
turtle.pendown()
turtle.circle(100)
turtle.color("yellow")
turtle.penup()
turtle.goto(-125,-70*(3**0.5))
turtle.pendown()
turtle.circle(100)
turtle.color("green")
turtle.penup()
turtle.goto(125,-70*(3**0.5))
turtle.pendown()
turtle.circle(100)
考点:
循环结构、分支结构、输出格式
10、打印9*9乘法表
foriinrange(1,10):
ifi==1:
print("1*1=1")
else:
forjinrange(1,i+1):
print(j,"*",i,"=",j*i,end="\t")#”\t”是制表符
print()
考点:
循环结构求因子、分支结构、输出格式
11、编写程序读取一个大于1的正整数,然后显示它所有的最小因子,也称之为素因子(即将一个正整数分解质因数)。
例如:
输入整数为90,输出90=2*3*3*5。
n=eval(input())
print(n,end='=')
whilen:
foriinrange(2,n+1):
a=n/i
ifa%1==0anda!
=1:
print(i,end='*')
break
elifa%1==0andint(a)==1:
print(i,end='')
break
n=int(a)
12、从键盘输入整数n,输出数字方阵。
例如:
输入n=5,输出如下:
12345
考点:
循环结构、分支结构、制表
23451
34512
45123
51234
n=eval(input())
foriinrange(1,n+1):
forjinrange(i,n+1):
print(j,end='\t')
ifi==1:
print()
ifi!
=1:
forkinrange(1,i,1):
print(k,end='\t')
print()
13、素数是指一对差值为2的素数。
如3和5就是一对双素数。
编写程序,输入正整数n,输出大于等于n的最小的一对双素数。
考点:
循环结构、分支结构、素数
defissushu(n):
k=1
foriinrange(2,n):
a=n/i
ifa%1==0:
k=0
returnFalse
ifk==1:
returnTrue
n=eval(input())
while1:
ifissushu(n)andissushu(n+2):
print(n,n+2,sep='')
break
else:
n=n+1
14、反素数(逆向拼写的素数)是指一个将其逆向拼写后也是一个素数的非回文数。
例如:
17和71都是素数,所以,17和71都是反素数。
编写程序,输入一个正整数,显示大于该数的前10个反素数。
考点:
函数:
素数、回文数
defissushu(n):
a=True
foriinrange(2,n):
if(n/i)%1==0:
a=False
returnFalse
ifa==True:
returnTrue
defnixiang(m):
m=str(m)
m=m[:
:
-1]
m=eval(m)
returnm
defnothuiwenshu(s):
s=str(s)
ifs==s[:
:
-1]:
returnFalse
else:
returnTrue
z=eval(input())
s=0
whiles<10:
z=z+1
ifissushu(z)andissushu(nixiang(z))andnothuiwenshu(z):
s+=1
ifs<10:
print(z,end='')
elifs==10:
print(z,end='')
15、编写一个函数,计算一个整数各个数字的和。
使用下面的函数头:
defsumDigits(n):
例如:
sumDigits(234)返回9(2+3+4)。
提示:
使用求余运算符%提取数字,而使用除号//去掉提取出来的数字。
使用一个循环来反复提取和去掉每个数字,直到所有数字被提取完为止。
编写程序提示用户输入一个整数,然后显示这个整数所有数字的和。
考点:
函数、求各位上的数
defsumDigits(n):
s=0
while1:
a=n%10
s=s+a
n=n//10#取出各位上的数的循环方法
ifn==0:
returns
n=eval(input())
print(sumDigits(n))
16、通过键盘输入一串小写字母(a~z)组成的字符串,编写一个测试程序,将字符串中连续出现的重复字符删去(即在一个字符串中,如果遇到连续重复的字符只出现一次),然后输出处理后的字符串。
例如:
str1="aabbccddaabbccdd",输出结果为:
"abcdabcd"。
考点:
字符串、列表
a=input()
c=0
e=-1
k=list(a)
foriina:
e+=1
b=ord(i)
ifc==b:
k[e]=''
c=b
k=[xforxinkifx!
='']
k=''.join(k)#列表变字符串输出形式
print(k)
变形:
输入一个字符串a,你需要通过将字符串中连续的字母表示为:
字母+出现次数的方式来压缩这个字符串。
例如"aabcccccaaa"压缩输出成"a2b1c5a3"。
x=input()
s=1
c=x[0]#初始字母,从此开始缩减字母显示次数
ss=""#创建空字符串
foriinrange(1,len(x)):
ifx[i]==c:
s+=1
else:
ss+=c+str(s)
c=x[i]
s=1
ss+=c+str(s)#+号表示字符串连接
print(ss)
17、编写下面的函数合并两个有序列表构成一个新的有序列表:
defmerge(list1,list2):
编写测试程序提示用户输入两个有序列表,然后显示合并后的升序列表。
要求:
不允许使用系统提供的sort方法。
考点:
函数、列表
输入格式:
两个有序列表(列表元素之间空格分隔,结尾无空格,回车换行输入下一个有序列表)
defmerge(list1,list2):
list3=list1+list2
list31=[]
forxinlist3:
x=int(x)
list31.append(x)
list31=sorted(list31,reverse=False)
returnlist31
a1=input()
b1=list(a1.split(''))
a2=input()
b2=list(a2.split(''))
print(merge(b1,b2))
18、输入30个数,输出其中最大的数。
考点:
循环结构、列表与max函数
方法一
max1=0
foriinrange(30):
x=eval(input())
ifx>max1:
max1=x
print(max1)
方法二
a=[]
foriinrange(30):
x=eval(input())
a.append(x)
max1=max(a)
print(max1)
考点:
字符串、Unicode码与ord、chr函数
19、初始化一个小写英文字符串a和一个非负数b(0<=b<26),将a中的每个小写字符替换成字母表中比它大b的字母。
这里将字母表的z和a相连,如果超过了z就回到了a。
例如a="cagy",b=3,则输出:
fdjb.
a=input()
b=eval(input())
l=[]
foriina:
x=chr(ord(i)+b)
ifx>'z':
x=chr(ord(i)+b-26)#如果超过了z就回到了a
l.append(x)
l=''.join(l)
print(l)
20、输入一个字符串a和一个正整数n,判断a中是否存在长度为n的回文子串。
如果存在,则输出YES,否则输出NO。
考点:
字符串及其索引的应用
a=input()
b=eval(input())
c=len(a)
o=0
foriinrange(c-b+1):
k=a[i:
i+b]
ifk==k[:
:
-1]andlen(k)==b:
o=1
print('YES')
ifo==0:
print('NO')
21、N的阶乘定义为:
N!
=N×(N-1)×……×2×1
请编写一个程序,输出N的阶乘的十进制表示中从最末一个非0位开始自低位向高位数的第K位。
现在给你N和K(0<=N<=10000,1<=K<=5),请你输出要求的数字(保证存在)。
例如:
N=5,K=2,则输出1note:
(5!
=120);
N=8,K=3,结果为0note:
(8!
=40320)
考点:
循环结构求阶乘、字符串索引、strip方法
N=eval(input())
K=eval(input())
jiecheng=1
ifN>1:
foriinrange(1,N+1,1):
jiecheng=jiecheng*i
x=jiecheng
w=str(jiecheng)
w=w.rstrip('0')
w=w[:
:
-1]
k=w[K-1]
print(k)
22、编写函数defrepeat(string,n,delim):
考点:
循环结构、字符串、函数
返回string重复n次的字符串,并且使用字符串delim分隔。
例如,repeat(“ho”,3,“,”)返回“ho,ho,ho”
defrepeat(string,n,delim):
x=""
foriinrange(n):
x=x+string+delim
returnx
string=input()
n=eval(input())
delim=input()
print(repeat(string,n,delim))
考点:
循环结构、列表及其内置函数、函数
23、编写函数defmerge(a,b),合并两个列表,其中元素交替来自于两个列表。
如果一个列表比另一个短,则把短的处理完,然后追加长列表中的剩余元素。
defmerge(a,b):
c=[]
l1=len(a)
l2=len(b)
ifl1==l2:
优化答案
defmerge(a,b):
l=[]
foriinrange(min(len(a),len(b))):
l.append(a.pop(0))#把列表a开头第一个元素删除并将返回值添加到列表l中
l.append(b.pop(0))
l.extend(a)#把列表a添加到列表l的尾部
l.extend(b)
returnl
foriinrange(l1):
c.append(a[i])
c.append(b[i])
elifl1 foriinrange(l1): c.append(a[i]) c.append(b[i]) c=c+(b[i+1: ]) elifl1>l2: foriinrange(l2): c.append(a[i]) c.append(b[i]) c=c+(a[i+1: ]) returnc 24、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数? 都是多少? foriinrange(1,5): forjinrange(1,5): forkinrange(1,5): ifi! =kandi! =jandj! =k: print(i,j,k) 25、一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米? 第10次反弹多高? defjianban(n): n=n/2 returnn a=eval(input("请输入高度: ")) b=eval(input("请输入落地次数: ")) c=a d=a e=a #反弹高度 foriinrange(b): a=jianban(a) #路程 ifb==1: c=a elifb==2: c=2*c elifb>2: forjinrange(0,b-2,1): c=c+jianban(d) d=jianban(d) c=c+e print("经过",c,"米","第",b,"次反弹",a,"米",sep="") 26、最大公约数和最小公倍数的计算。 从键盘接收两个整数,编写程序求出这两个整数的最大公约数和最小公倍数(两个数的乘积等于这两个数的最大公约数与最小公倍数的积。 即(a,b)×[a,b]=a×b) #求最大公约数 a=eval(input()) b=eval(input()) c=min(a,b) ys=[] k=0 foriinrange(2,c+1): if(a/i)%1==0and(b/i)%1==0: ys.append(i) k=1 ifk==0: maxyueshu=1 else: maxyueshu=max(ys) print(maxyueshu) #求最小公倍数 minbeishu=(a*b)/maxyueshu print("%d"%minbeishu) 27、将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数构成1: 2: 3的比例,试求出所有满足条件的三个三位数。 例如: 三个三位数192,384,576满足以上条件。 foriinrange(100,1000): a=2*i b=3*i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- python 入门 精选 计算机 二级 考试 可用