上海交大程序的设计python期末考试题.docx
《上海交大程序的设计python期末考试题.docx》由会员分享,可在线阅读,更多相关《上海交大程序的设计python期末考试题.docx(10页珍藏版)》请在冰豆网上搜索。
上海交大程序的设计python期末考试题
一.选择题:
将唯一正确的选项写在题前括号中(每题1分,共15分)
【】1.表达式'%d%%%d'%(3/4,3%4)的值是:
A.'0%3'B.'0%%3'C.'3/4%3%4'D.'3/4%%3%4'
【】2.下面标识符中不是python语言的保留字的是:
A.continueB.exceptC.initD.pass
【】3.以下程序的输出结果是(提示:
ord('a')==97):
lista=[1,2,3,4,5,'a','b','c','d','e']
printlista[2]+lista[5]
A.100B.'d'C.dD.TypeEror
【】4.下面的循环体执行的次数与其它不同的是:
A.i=0
while(i<=100):
printi,
i=i+1
B.foriinrange(100):
printi,
C.foriinrange(100,0,-1):
printi,
D.i=100
while(i>0):
printi,
i=i–1
【】5.自顶向下逐步求精的程序设计方法是指:
A.将一个大问题简化为同样形式的较小问题。
B.先设计类,再实例化为对象。
C.解决方案用若干个较小问题来表达,直至小问题很容易求解。
D.先设计简单版本,再逐步增加功能。
【】6.简单变量作为实参时,它和对应的形参之间数据传递方式是:
A.由形参传给实参B.由实参传给形参
C.由实参传给形参,再由形参传给实参D.由用户指定传递方向
【】7.以下说法不正确的是:
A.在不同函数中可以使用相同名字的变量。
B.函数可以减少代码的重复,也使得程序可以更加模块化。
C.主调函数内的局部变量,在被调函数内不赋值也可以直接读取。
D.函数体中如果没有return语句,也会返回一个None值。
【】8.关于list和string下列说法错误的是:
A.list可以存放任意类型。
B.list是一个有序集合,没有固定大小。
C.用于统计string中字符串长度的函数是string.len()。
D.string具有不可变性,其创建后值不能改变。
【】9.下面问题属于计算机本质上不可解问题的是:
A.Hanoi塔问题B.排序问题C.求阶乘D.Halting问题
【】10.python语言定义的class的初始化函数的函数名是:
A.initB.__init__C.__initD.init__
【】11.已知x=43,y=False;则表达式(x>=yand'A'<'B'andnoty)的值是:
A.FalseB.语法错C.TrueD."假"
【】12.对n个数做归并排序(mergesort),这个算法是:
A.nlogn时间的B.线性时间的C.logn时间的D.n2时间的
【】13.下面不是计算思维的特征的是:
A.概念化B.数学与工程思维的融合C.面向所有的人D.计算机的思维
【】14.执行下面操作后,list2的值是:
list1=[4,5,6]
list2=list1
list1[2]=3
A.[4,5,6]B.[4,3,6]C.[4,5,3]D.A,B,C都不正确
【】15.下列合法的变量名是:
A.main()B.car2C.2carD.var-name
二.概念填空(每空1分,共10分)
1.表达式eval("4*2+5%2+4/3")的结果是。
2.print'Thisfloat,%-10.5f,haswidth10andprecision5.'%(3.1415926)的输出结果是:
3.计算的本质是和。
4.执行print1.3-1==0.3,结果是False的原因是。
5.下面语句的执行结果是。
s="bbc"
printstring.split(3*s)
6.、、是科技创新的三大支柱。
7.无穷循环whileTrue:
的循环体中可用语句退出循环。
三.阅读程序并回答问题(每题5分,共40分)
1.当输入是54321时,写出下面程序的执行结果。
defmain():
num=input(“请输入一个整数:
”)
whilenum!
=0:
printnum%10
num=num/10
main()
答案:
5
4
3
2
1
2.写出下面程序的执行结果。
a=[1,20,32,14,5,62,78,38,9,10]
foriinrange(9):
if(a[i]>a[i+1]):
a[i],a[i+1]=a[i+1],a[i]
printa
3.写出下面程序的执行结果。
defmain():
lst=[2,4,6,8,10]
lst=2*lst
lst[1],lst[3]=lst[3],lst[1]
swap(lst,2,4)
foriinrange(len(lst)-4):
printlst[i],""
defswap(lists,ind1,ind2):
lists[ind1],lists[ind2]=lists[ind2],lists[ind1]
main()
4.写出下面程序的执行结果。
importstring
defmain():
s="Ilikepython!
"
s=string.lower(s)
alist=[]
countlist=[]
count=0
foriinrange(len(s)):
if(ord(s[i])<=ord('Z')andord(s[i])>=ord('A'))\
or(ord(s[i])<=ord('z')andord(s[i])>=ord('a')):
if(s[i]inalist):
sign=alist.index(s[i])
countlist[sign]+=1
else:
alist.append(s[i])
countlist.append
(1)
count+=1
foriinrange(count):
printalist[i],"",countlist[i]
main()
5.阅读下面程序
deffact(n)
returnn*fact(n-1)
defmain()
printfact(5)
请问该程序是否正确?
如果正确的话,请写出运行结果;如果不正确,则修改程序并写出相应运行结果。
6.下面程序是为了在屏幕上显示10个相同形状的长方形。
fromgraphicsimport*
defmain():
win=GraphWin(200,200)
shape=Rectangle(Point(20,20),Point(30,40))
shape.setOutline("yellow")
shape.setFill("red")
shape.draw(win)
sList=[]
sList.append(shape)
foriinrange(1,10):
p=win.getMouse()
c=sList[i-1].getCenter()
dx=p.getX()-c.getX()
dy=p.getY()-c.getY()
win.getMouse()
win.close()
main()
请问该程序是否正确?
如果不正确,请修改程序。
7.写出下面程序的功能。
假设文件“original”内容为
Upgrcynpmepyk.
Writeaprogram.
那么文件“savetoo”内存储的内容应该是什么?
importstring
defmain():
print"Thisisaprogram......"
infile=open("original",'r')
outfile=open("savetoo",'w')
msg=""
forstrstrininfile.readlines():
foricharinstrstr:
ifichar>='a'andichar<='z':
n=ord(ichar)+2
yn=(n-ord('a'))%26
ch=chr(ord('a')+yn)
elifichar>='A'andichar<='Z':
n=ord(ichar)+2
yn=(n-ord('A'))%26
ch=chr(ord('A')+yn)
else:
ch=ichar
msg=msg+ch
outfile.write(msg)
infile.close()
outfile.close()
main()
8.修改下面程序使得其能运行正常。
classBox:
#Box类
definit(self,l,w,h):
self.length=l
self.width=w
self.height=h
defvolume():
//计算Box的体积
returnlength*width*height
b=Box(4,5,6)
printb.volume()
四.程序填空(每空1分,共15分)
1.下列程序的作用是将输入的字符串中的每个字符的ASCII码形成一个列表。
例如,输入为abcde时,输出为[97,98,99,100,101]。
请补充完整。
defmain():
str=raw_input(“请输入一个字符串:
”)
output=[]
foriinrange():
num=
output.(num)
printoutput
main()
2.请补充完整mergesort程序。
defmerge(lst1,lst2,lst3):
i1=i2=i3=0
n1,n2=len(lst1),len(lst2)
whilei1iflst1[i1]#copyfromlst1
lst3[i3]=lst1[i1]
i1=i1+1
else:
#copyfromlist2
lst3[i3]=lst2[i2]
i2=i2+1
#itemaddedtolst3
while
lst3[i3]=lst1[i1]
i1=i1+1
i3=i3+1
while
lst3[i3]=lst2[i2]
i2=i2+1
i3=i3+1
defmergeSort(lst):
n=len(lst)
if
m=n/2
lst1,lst2=
mergeSort(lst1)
mergeSort(lst2)
merge(lst1,lst2,lst)
3.下面程序的作用是显示输入的三个整数的最大值和最小值,请补充完整。
defmain():
x,y,z=input("Pleaseinputthreewholenumbers:
")
max,min=f(x,y,z)
print"Maxvalue:
",max,"Minvalue:
",min
deff(a,b,c):
if(b>max):
max=b
if(c>max):
max=c
if(bmin=b
if(cmin=c
main()
4.下面程序的作用是打印一个由随机字符(*或者#)组成的等腰三角形,请补充完整。
from
fromstringimport*
defmain():
lines=input("pleaseinputthelinesoftriangle:
")
foriinrange(lines):
character=''
forj:
if:
mark='*'
else:
mark='#'
printspace+character
main()
五.程序设计(共20分)
1.计算1-1/2+1/3-1/4…+1/99-1/100+…直到最后一项的绝对值小于10-4为止。
(5分)
2.编程模拟一个与计算机扔骰子猜大小的游戏。
每次游戏采用三局两胜,计算机扔一个骰子,其中1,2,3算为小,4,5,6算为大。
用户每次可以猜大或者猜小,猜中则用户赢,否则计算机赢。
如程序的一次运行情况如下:
Pleaseinputyourguess(big/small):
small
Youarewrong.
Pleaseinputyourguess(big/small):
dfdfd
Pleaseinputyourguess(big/small):
big
Youareright.
Pleaseinputyourguess(big/small):
big
Youarewrong.
Youlostthisround
Playagain?
(y/n):
ddd
Playagain?
(y/n):
n
Youplayed1rounds,andyouwon0rounds
要求:
尽可能用到模块化程序设计的思想。
(15分)