logo资料库

python语言程序设计(刘卫国)实验指导_部分答案.doc

第1页 / 共14页
第2页 / 共14页
第3页 / 共14页
第4页 / 共14页
第5页 / 共14页
第6页 / 共14页
第7页 / 共14页
第8页 / 共14页
资料共14页,剩余部分请下载后查看
附录 实验指导
实验1 Python语言基础
实验2 顺序结构程序设计
实验3 选择结构程序设计
实验4 循环结构程序设计
实验6 字符串与正则表达式的应用
实验7 列表与元组的应用
实验8 字典与集合的应用
实验9 函数的应用
实验10 面向对象程序设计方法
实验11 文件操作
实验12 异常处理
实验13 图形绘制
实验14 图形用户界面设计
实验15 综合程序设计
附录 实验指导 实验 1 Python 语言基础 6.计算并输出π 2。请补充程序,并上机运行该程序。 import math p= ① print(p) ①math.pi*math.pi 实验 2 顺序结构程序设计 3.输入自己的出生年、月、日,按下列格式输出自己的出生日期信息。 1992,12,5↙ 我的出生日期是 1992 年 12 月 05 日 y,m,d=eval(input()) print("我的出生日期是{0}年{1:02d}月{2:02d}日".format(y,m,d)) 4.输入一个正的实数 x,分别输出 x 的整数部分和小数部分。 x=eval(input("输入一个正的实数:")) k=int(x) #求整数部分 y=x-k #求小数部分 print("{0:f}={1:d}+{2:f}\n".format(x,k,y)) 实验 3 选择结构程序设计 1.若从键盘输入 55,写出以下程序的输出结果。 a=int(input()) if a>40: print("a1=",a) if a<50: print("a2=",a) if a>30: print("a3=",a) 2.分析以下程序的输出结果,说明出现该结果的原因,应该如何修改程序? x=2.1 y=2.0 if x-y==0.1: print("Equal") else: print("Not Equal") 3.下面程序的功能是判断一个整数是否能被 3 或 7 整除,若能被 3 或 7 整除,则输出“Yes”, 否则输出“No”,请补充程序。 m=int(input()) : if ① print("Yes") 1
else: print("No") ①m%3==0 or m%7==0 实验 4 循环结构程序设计 二、实验内容 1.写出下列程序的运行结果。 i=1 while i+1: if i>4: print(i) i+=1 break print(i) i+=2 1 3 5 2.写出下列程序的运行结果。 sum=j=1 while j<=3: f=1 for i in range(2,2*(j+1)): f*=i sum+=f j+=1 print("sum=",sum) sum= 5167 3.阅读下面的 Python 程序,程序的功能是什么? import math n=0 for m in range(101,201,2): k=int(math.sqrt(m)) for i in range(2,k+2): if m%i==0:break if i==k+1: if n%10==0:print() print(m,end=' ') n+=1 输出 100~200 间的全部素数,每行输出 10 个数。 实验 6 字符串与正则表达式的应用 1.写出程序的运行结果。 c='123'+'456'+'789' 2
c+=c[-3:]*2 print(c) 2.写出下列程序的功能。 for k in range(1,11): w=input() if 'AEIOUaeiou'.find(w[0])>=0:print(w) 3.下面是打印图实验 6-1 所示的金字塔图案的程序,请补充程序。 图实验 6-1 金字塔图案 for i in range(1,6): print(' '*(15-i),end='') print('*'* ) ① ①(2*i-1) 8.利用正则表达式判断字符串是否只有小写字母或数字。 import re s='12345abc' if re.match('^[0-9a-z]+$',s): print('符合要求') else: print('不符合要求') 实验 7 列表与元组的应用 1.写出程序的运行结果。m= 3 a=[50,75,53,92,77,64,79,21] s=[0]*10 for i in range(len(a)): k=a[i]//10 s[k]=s[k]+1 m=s[0] k=1 while k<10: if s[k]>m: m=s[k] k+=1 print('m=',m) 2.下面的程序是希望从键盘输入 10 个数,并用它们建立元组 p,但程序运行时出现错误: AttributeError: 'tuple' object has no attribute 'append' 请修改程序,使程序能达到要求。 p=() 3
for i in range(10): x=int(input()) p.append(x) print(p) 3.筛选法求[2,n]范围内全部素数的基本思路是:在 2~n 中划去 2 的倍数(不包括 2), 再划去 3 的倍数(不包括 3),由于 4 已被划去,再找 5 的倍数,……,直到划去不超过 n 的倍 数,剩下的数都是素数。下面是用筛选法求[2,n]范围内的全部素数的程序,请补充程序。 from math import * n=int(input("请输入 n:")) m=int(sqrt(n)) p=[i for i in range(n+1)] for i in range(2,m+1): if p[i]: for j in range(2*i,n+1, p[j]=0 for i in range(2,n+1): if ② : ① ): #去掉 i 的倍数 #输出全部素数 print(p[i]) ①i,②p[i]或 p[i]!=0 7.生成包含 20 个随机整数的元组,将前 10 个数按升序排列,后 10 个数按降序排列。 a=tuple(randint(10,99) for i in range(0,20)) y=sorted(a[0:10])+sorted(a[10:20],reverse=True) tuple(y) 实验 8 字典与集合的应用 1.写出程序的运行结果。 d={'Jack':'jack@mail.com','Tom':'Tom@mail.com'} d['Jim']='Jim@sin.com' del d['Tom'] s=list(d.keys()) s=sorted(s) print(s) 2.写出程序的运行结果。 numbers={} numbers[(1,2,3)]=1 numbers[(2,1)]=2 numbers[(1,2)]=3 sum=0 for k in numbers: sum+=numbers[k] print(len(numbers),sum,numbers) 3 6 {(1, 2): 3, (2, 1): 2, (1, 2, 3): 1} 3.写出程序的运行结果。 a=set('ababcdabca') 4
x={x for x in a if x not in 'ab'} print(a-x) print(a|x) print(a^x) print(a&x) 4.从键盘输入整数 x,判断它是否集合 a,b,c 的元素,若是分别输出 1,2,3,若都 不是输出 4,要求集合 a 从键盘输入。请补充程序。 a. ② (int(input())) x=int(input()) a= for i in range(5): ① b={12,43,56,2} c={3,2,67} if x in a: elif x in b: elif x in c: else: y=1 y=2 y=3 y=4 print('y=',y) ①set(),②add 实验 9 函数的应用 1.写出下列程序的运行结果。12 def foo(num): for j in range(2,num//2+1): if num%j==0: return False else: return True def main(): n,c=8,0 for i in range(2,n+1): if foo(i): c+=i print(c) main() if __name__=='__main__': 2.写出下列程序的运行结果。 def foo(list,num): if num==1: list.append(0) 5
elif num==2: foo(list,1) list.append(1) elif num>2: foo(list,num-1) list.append(list[-1]+list[-2]) mylist=[] foo(mylist,10) print(mylist) [0, 1, 1, 2, 3, 5, 8, 13, 21, 34] 3.下列程序的作用是求两个正整数 m,n 的最大公约数,请补充程序。 def gcd(m,n): if m
2.写出程序的运行结果。 import math class Circle: def __init__(self,radius): self.radius=radius def getRadius(self): return self.radius def getArea(self): return math.pi*self.radius*self.radius def main(): c1=Circle(10) print(c1.getRadius()) print('{:7.2f}'.format(c1.getArea())) if __name__=='__main__': main() 10 314.16 3.定义一个 Circle 类,根据圆的半径求周长和面积。再由 Circle 类创建两个圆对象, 其半径分别为 5 和 10,要求输出各自的周长和面积。请补充程序。 import math class Circle: ① def (self,radius=5): self.radius=radius def getPerimeter(self): #返回圆的周长 return 2*math.pi*self.radius def getArea(self): #返回圆的面积 return math.pi*self.radius*self.radius ② #创建两个圆对象 c1=Circle() c2= print(c1.radius,c1.getPerimeter(),c1.getArea()) print(c2.radius,c2.getPerimeter(),c2.getArea()) ①__init__,②Circle(10) 实验 11 文件操作 1.写出程序的运行结果。45 f=open("a.dat","w") for i in range(10): f.write(str(i)) f.close() f=open("a.dat","r") s=list(f.read()) f.close() t=0 for i in s: 7
t+=int(i) print(t) 2.写出程序的运行结果。输出:25 s=0 fo=open("file.txt","w+") for i in range(1,10): fo.write(str(i)) fo.seek(0) ls=fo.read() fo.close() for x in ls: s+=int(x) if int(x)%2 else 0 print("输出:{:d}".format(s)) 3.有一个文本文件 sample.txt,其内容包含小写字母和大写字母。请将该文件复制到另一 文件 sample_copy.txt,并将原文件中的小写字母全部转换为大写字母,其余格式均不变。请补 充程序。 f=open("sample.txt") L1=f.readlines() f2=open("sample_copy.txt", for line in L1: (line.upper()) ② f.close() f2.close() ①'w',②f2.write ① ) 实验 12 异常处理 1.写出下列语句的执行结果,如果出现异常则写出异常类型。 >>> x+y=9 >>> Print(12) >>> print(xyxy) >>> print(12/0) >>> print(12/'0') >>> f=open('aaa.dat') >>> x=[1,2,3,4,5] >>> print(x[5]) 2.写出程序的运行结果。 x="Python" try: print(x[5]) print(x[6]) except IndexError: print("Index wrong!") 3.写出程序的运行结果。 try: 8
分享到:
收藏