完整word版python入门精选题计算机二级考试可用0001.docx
《完整word版python入门精选题计算机二级考试可用0001.docx》由会员分享,可在线阅读,更多相关《完整word版python入门精选题计算机二级考试可用0001.docx(20页珍藏版)》请在冰豆网上搜索。
![完整word版python入门精选题计算机二级考试可用0001.docx](https://file1.bdocx.com/fileroot1/2023-2/1/168482e4-0c15-4efa-acef-51950e78c613/168482e4-0c15-4efa-acef-51950e78c6131.gif)
完整word版python入门精选题计算机二级考试可用0001
Python入门精选30题
1.输入一个三位整数,判断这个数是不是“所谓“水仙花
数”是指一个三位数,其各位数字立方和等于该数,例如:
153=1^3
+5八3+3八3,153就是水仙花数。
考点:
循环结构、分支结构
n二eval(inputO)
i=n
a二0
whilei:
a=a+(i%10)**3
i=i//10
ifa二二n:
printC'yes")
else:
pnnt(MnoM)
2.随机产生一个两位数的数字,然后用户输入一个两位数的数字,如果用户输入的数字与随机产生的数字完全相同(包括顺序),则输岀
奖励100分;如果用户输入的数字与随机产生的数字相同(不包括
顺序),则输出奖励50分;如果用户输入的数字与随机产生的数字有一位数相同,则奖励10分,如果都不相同,则输入没有奖励。
考点:
产生随机数、取出一个整数各位上的数.分支结构
importrandoma=random.randint(10,99)b=eval(inputO)al=a%10a2=a//10bl=b%10b2=b//10ifa==b:
printClOO1)
elifal==b2anda2==bl:
printC50')
elifal==blora2二二b2oral==b2ora2==bl:
printflO)
else:
printCO1)
3式中显示数字
(编写一个嵌套
for循环来显示下面
的输岀):
1
21
42I
8421
16S42I
32168421
0432ie•42I
128643?
”8a2
a=eval(input())foriinrange(a):
ifi==0:
考点:
循环结构、制表
forjin「ange(a・i):
printf,,end=,\t,)printcr,end=")forjinrange(a-i):
print('■|end='\t,)printO
elifi!
=0:
forkinrange(a・i):
print('',end=,\t')
forIinrange(0.i+l):
al=2**lprint(al1end='\t,)
foryinrange(i-l.-l,・1):
al=2**yprint(al.end=,\ti)forxinrange(a-i):
printf',end=,\t')printQ
e
yp>>r->
creditsorlicense\j
lortoremiormation.
RESTART:
C:
/Users/3tft/Desktoc./2.py
1248
12481632
624
1248136
1246163264⑵
248W3264
12481632
1248
a=evaiiinputuj
•n1rang*(a):
ifiss0:
forjtnrange(a-lj:
print(*,ends,\t')
printCL\end-)、forj仃ranse(a-f:
print(*,end=,\t'>
print0
ellfi!
-0:
forkinrange(a-f:
tprintC,end=,\t')t'x1range(0,i-1):
al-2**lprint(al.endB,\t*)fory「ranseCi-],-],-1):
al=2**yprint(al.ends,\t)forxInranBe(a-f:
tprintC,ends,\t')print0
4、如果一个素数可以写成2Ap-l的形式,其中p为一个正整数,那么这个数被称编写程序找出所有的p<=31的梅森素
考点:
素数、循环结构、分支结构
数。
defissushu(n):
k=l
foriinrange(2.n):
a二n/i
ifaHl==0:
k=0
returnFalse
ifk==l:
returnTrue
P=1
whilep<=31:
a二(2"p)-l
p+=l
ifissushu(a):
print(a,end二’*)
5.写一个函数计算下面
考点:
循环结构
defm(n):
S~1
m=0
whiles<=n
a=s
s=s+lm=m+(a/s)returnm
n二eval(inputO)print(m(n))
6、神奇的Collatz序列。
编写一个名为collatz的函数,它接收一
个名为number的整数参数,如果number是偶数,就打印
number//2,并返回该值。
否则打印3*number+l并返回。
同时编
写主程序,让用户输入一个整数,并不断地调用该函数(用第一次的
返回值做第二次的参数,以此类推),直到函数返回1.例如用户输
考点:
函数、循环结构.分支结构
入3则打印输出应为
10
5
16
8
4
2
1
defcollatz(number):
ifnumber^2==0:
a二number//2print(a)return(a)
else:
b二number*3+lprint(b)return(b)
number二eval(inputO)
while1:
number=collatz(number)
ifnumber==l:
break
7、一个数如果恰好等于它的除自身外的因子之和,这个数就称为“完
数'。
例如6二1+2+3,6是编写程序输出1至1000之间
的所有完数。
考点:
完数、print输出格式.循环结构.分支结构
defwanshu(n):
s=0
foriinrange(l,n):
a=n/iifaWl==0:
s=s+i
ifs二二n:
returnTrue
foriinrange(l,1001,l):
ifwanshu(i):
print(i£nd="*)
8、使用turtle绘制一(五角星的每个
太阳花:
importturtleturtlepensize(3)turtle.speed(lO)
turtle.colorCyellowWed*)turtle.beginJillOforiinrange(30):
turtle,colorCrecT)turtlepenupOturtle.goto(250,0)turtlependownOturtlecircle(lOO)
turtle.color(,,yellowM)turtlepenup()
turtlegoto(-125,-70*(3**0.5))
turtlependownO
turtle.circle(lOO)
turtlecolorCgreen*1)turtlepenup()
turtle.goto(125,-70*(3**0.5))turtlependownO
turtlecircle(lOO)
turtle.forward(lOO)turtle.right(165)turtle.forward(lOO)turtle.end.fillO
1*1=1
foriinrange(l.lO):
ifi==l:
printfl♦1=1")
else:
forjinrange(l.i+l):
print(j:
'*,,,i:
=,,,j*i,end=,,\r)#、广是制表符
printQ
丄
>py-欢top/2py()&0)
□X
F乂
tdfor
Ibranged.10):
1
If—】:
2
1
print("1•!
•!
*)
4
)ranteCl,KI):
printG・♦・1,\t")
print0
子,也称之为素因子(即将一个正整数分例如:
输入整
数为90,输出90=2*3*3*5•
n二eval(inputO)
p「int(n,end='=')
whilen:
foriinrange(2,n+1):
考点^循环结构求因子、分支结构、输出格式
a=n/i
ifaHl==Oanda!
=l:
print(i,end=,**)break
elifa%l==Oandint(a)==l:
print(i,end=")break
n=int(a)
12.从键盘输入整数n,。
例如瀚入n=5,输出如下:
12345
23451
34512
45123
51234
n=eval(inputO)
foriinrange(l,n+1):
forjinrange(i,n+l):
print(j,end=,\t,)ifi==l:
printO
ifi!
=l:
forkinrange(ljl):
print(k.end=,\t)printQ
考点:
循环结构、分支结构、制表
n=eval(input0?
foriinranged.n4l):
forjirrarse(l.n+1):
print(j,endc:
\t‘)
Ifi==l:
printOif1!
=1:
f:
rkir.range(1,i,1.':
prlr.t(k.end-*)printO
1
2
3
4
5
6
2
3
4
5
6
1
3
4
5
6
1
2
4
5
6
1
2
3
5
6
1
2
3
4
6
1
2
3
i
■
5
»>
6
13.素数是指一对差值为2的素数。
如3和5就是一对双素数。
编
写程序,输入正整数n,输出大于等于n的最小的
defissushu(n):
k=l
foriinrange(2fn):
a=n/iifaWl==0:
k=0
考点:
循环结构.分支结构、素数
returnFalse
ifk==l:
returnTrue
n二eval(inputO)
while1:
ifissushu(n)andissushu(n+2):
print(n,n+2.sep=')break
else:
n二n+1
14.反素数(逆向拼写的素数)是指一个将其逆向拼写后也是
。
例如"7和71都是素数,所以,27和71都是反素
数。
编写程序,输入一个正整数,显示大于该数的前10
考点:
函数:
素数、回文数
defissushu(n):
a二True
foriinrange(2,n):
if(n/i)%l==0:
a=FalsereturnFalseifa==True:
returnTrue
defnixiang(m):
m=str(m)
m=eval(m)
returnm
defnothuiwenshu(s):
s二str⑸
ifs==s[:
:
-l]:
returnFalse
else:
returnTruez=eval(inputO)s=0
whiles<10:
z=z+l
ifissushu(z)andissushu(nixiang(z))andnothuiwenshu(z):
s+=l
ifs<10:
print(乙end=**)
elifs==10:
print(乙end二J
15.
编写一个函数,计算一个
例如:
sumDigits(234)返回9(2+3+4)。
提示:
使用求余运算符%提取数字,而使用除号〃去掉提取出来的数字。
使用一个循环来反复提取和去掉每个数字,直到所有数字被提取完为止。
编写程序提示用户输入一个整数,然后显示这个整数所有数字的和。
考点:
函数.求各位上的数
defsumDigits(n):
s=0
while1:
a=n%10
s=s+an=n//10#取出各位上的数的循环方法
returns
n二eval(inputO)print(sumDigits(n))
16、通过键盘输入一串小写字母(2〜Z)组成的字符串,编写一个测试程序,(即在一个字符串中,如果遇到连续重复的字符只出现一次),然后输出处理后的字符串°例如:
strl=iaaabbccddaabbccddN9输出结果为:
"abcdabcd".
a二inputO
c=0考点:
字符串、列表
e=-l
k=list(a)
foriina:
e+=l
b=ord(i)
ifc==b:
k[e]='•
c=b
k=[xforxinkifx!
=*']
k=".]oin(k)#列表变字符串输岀形式print(k)
变形:
输入一个字符串a,你需要通过将字符串中连续的字母表示为:
字母+出
现次数的方式来压缩这个字符串。
例如MaabcccccaaaMffi缩输出成Ma2blc5a3Mo
x二inputO
S=1
c=x[O]#初始字母.从此开始缩减字母显示次数
SS二““#创建空字符串
foriinrange(l」en(x)):
ifx[i]==c:
s+=1ss+=c+str(s)
c=x[i]
s=1
ss+=c+str⑸号表示字符串连接print(ss)
17.编写下面的函数合并两个有序列表构成一个新的有序列表:
defmerge(listljist2):
编写测试程序提示用户输入两个有序列表,然后显示合
要求:
不允许使用系统提供的sort方法。
Ed
输入格式:
两个有序列表(列表元素之间空格分隔,结尾无空格,回车
考点:
函数、列表
换行输入下一个有序列表)
defmerge(listl,list2):
Iist3=listl+list2
Iist31=[]
forxinIist3:
x=int(x)
Iist31append(x)
Iist31=sorted(list31,reverse=False)returnIist31
al=inputObl=list(al.splitf*))a2=inputOb2=list(a2.splitC'))print(merge(bl,b2))
18.输入30个数,输出其
考点:
循环结构.列表与max函数
方法一
maxi二0
foriinrange(30):
x=eval(inputO)ifx>maxl:
maxi二xprint(maxl)
方法二
a=D
foriinrange(30):
x=eval(inputO)
a.append(x)
maxl=max(a)
print(maxl)
19x初始化一个小写英文字符串a和一个非负数b(0<=b<26),将a
中的每个小写换成字母表中比它大b。
这里将字母表的
z和a相连,如果超过了z就回到了a。
例如a二"cagy”,b二3,则输出:
考点:
字符串.Unicode码与ord.chr函数
fdjb.
a二inputO
b=eval(inputO)l=D
foriina:
x=chr(ord(i)+b)
ifx>'z':
x=chr(ord(i)+b-26)#如果超过了z就回到了a
l.append(x)
I二:
join(l)
print(l)
20、输入一个字符串a和一个正整数n,判断a中是否存在长度为n
如果存在,则输出YES,否则输出NO。
考点:
字符串及其索引的应用
a二inputOb=eval(inputO)c=len(a)o=0
foriinrange(c-b+l):
k=a[i:
i+b]
ifk二二k[二andlen(k)==b:
o=lprintCYES')
ifo==0:
printCNO)
21、N的阶乘定义为:
N!
=Nx(N-1)x……x2xl
请编写一个程序,输出N的十进制表示中0
开始现在给你N和K(0<=N<=10000,
二Kv二5),请你输出要求的数字(保证存在)。
例如:
N二5,K二2,则输出1
note:
(5!
=120);
N=8,K=3,结果为0
note:
(8!
=40320)
考点:
循环结构求阶乘.字符串索引.strip方法
N=eval(input())K=eval(inputO)jiecheng=lifN>1:
foriinrange(l.N+l,l):
jiecheng二jiecheng*ix=jiechengw=str(jiecheng)w^w.rstripfO*)
w=w[:
:
k=w[K-l]print(k)
22、编写函数defrepeat(string,n,delim):
返回string重复n次的字符串,并且使用字符串delim分隔。
例如,
repeat(uhoH,3,T)返回“ho,ho,ho”
defrepeat(string.n.delim):
X二""
foriinrange(n):
x=x+string+delim
returnx
string二inputO
n二eval(inputO)delim二input。
print(repeat(stringrn,delim))
考点:
循环结构、字符串.函数
23、编写函数defmerge(a,b),合并两个列表,其中元素交替来自
于两个列表。
如果一个列表比另一个短,则把短的处理完,然后追加
长列表中的剩余元素。
defmerge(a.b):
c=D
ll=len(a)
I2=len(b)
ifI1==I2:
foriinrange(ll):
c.append(ap])cappend(b[i])elifllforiinrange(ll):
c.append(ap])cappend(b[i])c=c+(bp+i:
])elifll>l2:
foriinrange(l2):
cappend(a[i])c.append(b[i])
考点:
循环结构.列表及其内置函数、函数
优化答案
defmerge(atb):
I=o
foriinrange(min(len(a).len(b))):
l.append(a.pop(0))#把列表a开头第一个元素删除并将返回值添加到列表I中
l.append(b.pop(0))
l.extend(a)#把列表a添加到列表I的尾部
Iextend(b)
returnI
c=c+(a[i+l:
])returnc
24、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的
三位数?
都是多少?
foriinrange(l,5):
forjinrange(l,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(Mi»输入高度:
”))b=eval(inputCit输入落地次数:
J)
e二a
#反弹高度
foriinrange(b):
a=jianban(a)
#路程
ifb==l:
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)x[a,b]=axb)
#求最大公约数
a=eval(inputO)
b=eval(inputO)
c=min(a,b)
ys=D
k=0
foriinrange(2,c+l):
if(a/i)%l==Oand(b/i)Wl==0:
ys.append(i)
k=l
ifk==0:
maxyueshu^l
else:
maxyueshu=max(ys)
print(maxyueshu)
#求最小公倍数
minbeishu=(a*b)/maxyueshu
print(MHdM%minbeishu)
27、将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数构成1:
2:
3的比例,试求出所有满足条件的三个三位数。
例如:
三个三位数192,384,576满足以上条件。
foriinrange(100,1000):
a=2*i
b=3*i
if100print(i.a,b,sep=,')
28、若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。
例如:
给定一个10进制数56,将56加56(即把56从右向左读),
得到121是一个回文数。
又如:
对于10进制数87:
STEP2:
165+561
STEP4:
1353+3531
上例最少用了4步得
STEP1:
87+78=165
=726
STEP3:
726+627=1353
=4884
在这里的一步是指进行了一次N进制的加法,
到回文数4884。
defishui(n):
n=str(n)
ifn==n[:
:
-l]:
returnTrue
else:
returnFalse
defm(n):
n二str(n)
n=n[:
:
-l]
n=eval(n)
returnn
N=eval(inputO)
if2<=N<=10:
N=N
else:
N=16
M=eval(inputO)
ifN!
=10:
M=str(M)
M=int(M.N)#将一个任意进制的数转化为十进制数
M=int(M)
cn=0
whilenotishui(M):
M=M+ni(M)
c