加载中...
加载中...
Python程序设计实验汇总和例题汇总

Python程序设计实验汇总和例题汇总 转载

第二章 Python序列

知识点1 列表的建立和相关操作函数

例题1 已知s1为一个空列表, 将1到1000内所有质数按从小到大的顺序加入列表末尾,接着将被5除余1的元素删除,然后在列表中将索引能被5整除的元素删除,最终得到了一个新的列表s2,求s2中所有元素的和所有元素的乘积

知识点2 列表的切片

例题2 已知s1为1到10000的所有平方数的序列,其顺序为从大到小,将所有列表中索引为奇数的元素提出出来组成新的列表s2,将其他的元素组成新的列表s3,其中顺序不变。将s2和s3的元素合并为新的列表s4,其中s4中s2的元素在前,s3中的元素在后,将s4转化为字符串,求下标为3到下标100的字符组成的字符串

知识点3 字典的建立和相关操作

例题3 产生字典 A={'1':2,'3':4,'5':6........'999':1000},然后将关键字为偶数的条目的值加一,将关键字为奇数的条目的值减一。 产生字典B={'a':1,'b':2.....'z':26},将A和B合并为新的字典C(其中B的元素放在A的后面) 将C转换为字符串sx,求sx的md5值

知识点4 集合的建立和相关操作

例题4 从文件timu1.txt中读取字符串,求该字符串中有多少个不同的单词

#例题1 code1.py
def isprime(n):
for i in range(2,n):
if n%i==0:
return False
return True
s1=[]
for i in range(2,1000):
if isprime(i):#是质数则插入列表中
s1.append(i)
print(s1,len(s1))
for i in s1.copy(): #注意 是副本,因为s1被删除元素,导致了无法完全遍历。
if i%5==1:
s1.remove(i) #删除被5除余1
print(s1,len(s1))
s2=s1
del s2[0::5] #利用切片方法删除索引被5除余0的元素
print(s2,len(s2))
sum1=0
product=1
for i in s2:
sum1+=i
product*=i
print('和=',sum1)
print('乘积=',product)
#第2
import math
print(math.sqrt(10000))
s1=[]
for i in range(1,100+1):
s1.append(i*i)
s1.reverse()

s2=s1[1::2]#奇数位索引元素
s3=s1[0::2]#偶数位索引元素
sx=s2+s3
print(str(sx)[3:101])
#第3
dictA={}
for i in [i for i in range(1,1000) if i%2==1]:
dictA[str(i)]=i+1
#print(dictA)
x1=[]
for i in range(ord('a'),ord('a')+26):
x1.append(chr(i))
#print(x1)
x2=[i for i in range(1,27)]
dictB=dict(zip(x1,x2))
dictA.update(dictB) #A和B进行字典合并
ss=str(dictA)
#print(ss)
import hashlib
hashlib.md5(ss.encode()).hexdigest()
#第4
txt=open(r'c:/test/t1.txt','r').read()
txt2=txt.split()
h=set(txt2)
print(h)
print(len(h)) #不同的单词

第三章 选择与循环

知识点5 循环语句的使用

例题5 构造字典{'1':1,'2':4,'3':9,'4':16.....'100':10000}; 修改字典A,如果关键字为3整除,其对应值加1;如果关键字为被3除余数1,其对应值减少1 构造字典B{1:2,3:4,5:6....99:100} 并且和上面的字典合并为新的字典。把字典转换为字符串,求第100到110(从1开始)的字符组成的字符串 例题6 计算组合数C(1000,20)的值,即从1000个不同的物品中挑选20个物品,在不计顺序的情况下有多少种挑选方法 例题7 计算123....9899*100的值,求结果中间第50位到60位 这11位数字组成的字符串

知识点6 选择语句的使用

例题8 已知函数f(x)

f(x)={x2,x31x+1,x32x+5,x30

求 表达式的值


知识点7 循环和选择语句的综合应用

例题 9 分解质因数 将1234567890 分解为若干个质数的成绩,可以看出,这样的分解是唯一的,求所有这些质数因子的和

#例题5
a={}
for i in range(1,101):
a[str(i)]=i*i
for i in a.keys():
if int(i)%3==0:
a[i]=a[i]+1
if int(i)%3==1:
a[i]=a[i]-1
b={}
x=[i for i in range(1,101) if i%2==1]
y=[i for i in range(1,101) if i%2==0]
b=dict(zip(x,y))
a.update(b)
print(str(a)[99:99+11])
#例题6
#print(list(range(1000-20+1,1000+1)))
p=1
k=1
for i in range(1000-20+1,1000+1):
p=p*i
for i in range(1,20+1):
k=k*i
#print(p)
#print(k)
print(p//k) #求出的值
#例题7
s=1
for i in range(1,101):
s=s*i
print(s,len(str(s)))
k=str(s)
print(k[49:49+11])
#例题8
def f(x):
if x%3==1:
return x*2
elif x%3==2:
return x+1
else:
return x+5
s=10
for i in range(1,100):
s=f(s)
#print(s)
print(s)
#例题9 
n=1234567890
import math
def isprime(n):
for i in range(2,n):
if n%i==0:
return False
return True
y=int(math.sqrt(n))
yx=[]
#构建一个从2到y的质数列表
for i in range(2,y+1):
if isprime(i):
yx.append(i)
yx.reverse()
re=[]
while n!=1:
for i in yx:
if n%i==0:
n=n//i
re.append(i)
break
print(re)
sum(re)

第4章 字符串与增则表达式

知识点10 字符串的转换

例题10 已知文件ab.txt,读取该文件,将读取到的字符串x,求其md5,并且将该值转换为10进制r,求r的立方的值,并且转换为8进制的字符串(以0o开头)

知识点11 正则表达式的应用

例题11 在字符串中统计多少不同的合法的学号,已知学号是1500开头并且有且只有8位数字。

例题12 在字符串bdf:djfdjf:djfkddkf,kkkd/dfkdfdk/233/dfdf中,分隔符可能为:和,和/, 要求在字符串中统计有多少个不同的单词

#例10 求hash值,并且转换10进制计算
f=open(r'c:/test/ab.txt','r').read()

import hashlib
x1=hashlib.md5(f.encode()).hexdigest()
y=int(x1,16) #16进制字符串转10进制整数
z=y*y
print(z)
oct(z)
#例子11 
a='1500:1500123456:15009087fkf1822;1500839934893849384;15009801;1238800;xxx'
import re
b=re.findall('1500[\d]{4,}',a)#找到1500开头 8或者8以上的字符串
c=[]
for i in b:
if(len(i)==8):
c.append(i)
print(c)
print(len(c))#合法学号的个数
#例12
x='bdf:djfdjf:djfkddkf,kkkd/dfkdfdk/233/dfdf'
import re
y=re.findall('[a-zA-Z]+',x)
print(y)
print(len(set(y)))

第5章 函数的设计和使用

知识点 时间函数和转换的使用

例13 求公元100年1月1日到 2019年1月30日过了多少天?相当于多少秒(例如昨天到今天就是过了1天)

例14 求斐波拉契数列的第100项是多少?

#例子13
import datetime
d1=datetime.datetime(100,1,1,0,0,0)
d2=datetime.datetime(2019,1,30,0,0,0)
t=d2-d1
print('天数',t.days)
print('秒数',t.total_seconds())

第6章 面向对象程序设计

知识点 类的定义和使用

例题15: 带分数计算 1+1/2+1/3+.....1/100 的值的分子和分母的和

#分数加法和乘法1+1/2+1/3+1/4+.....1/150 的分子和分母之和
from fractions import Fraction
s=0
for i in range(1,151):
s=s+Fraction(1,i)
print(s)
print(s.numerator+s.denominator)

综合应用

知识点 文件的操作

例题16 在所给100个文件中,A文件和B文件内容完全相同,C文件和D文件内容完全相同,求ABCD中文件名中数字之乘积 注意:文件在http://111.231.9.47/pythoncourse/experiment/aff/total/ 目录下 test2.rar 目标另存为 保存到本地

知识点 urllib读取网页

例题17 略(可参考以前的实验)

知识点3 tcp通信

例题18 略(可参考以前的实验)

知识点4 udp通信

例题19 略(可参考以前的实验)

知识点5 GUI编程

例题20 简单计算器:要求界面上有6个按钮:1, 2, 3, 4, +, =。 一个文本输入框,当鼠标按顺序点击按钮12+34,文本框中一次出现 12+34的提示 当点击 = 时,文本框中出现答案 46.

#例题16
path=r'c:/test2/' #把文件全部放在c:/test2目录下
import hashlib
bx={}
result=[]
for i in range(101,200):
fname=str(i)+'.txt'
x=open(path+fname,'r').read()
y=hashlib.md5(x.encode()).hexdigest()
#注意这里的字典是用md5值作为关键字,文件名组成的列表作为值
if y in bx.keys():
#如果该关键之存在于字典中,说明有一个相同的文件在之前已经被插入了字典
bx[y].append(i)
print(bx[y])
result.append(bx[y])
else:
bx[y]=[i]
print(result)
x1=result[0][0]
x2=result[0][1]
x3=result[1][0]
x4=result[1][1]
print(x1*x2*x3*x4) #四个文件数字的乘积
#例子20 简单计算器
import tkinter
import tkinter.messagebox
def ba1():
s=entry.get()
entry.insert(len(s),'1')
def ba2():
s=entry.get()
entry.insert(len(s),'2')
def ba3():
s=entry.get()
entry.insert(len(s),'3')
def ba4():
s=entry.get()
entry.insert(len(s),'4')
def ba5():
s=entry.get()
entry.delete(0,len(s))
def badd1():
s=entry.get()
entry.insert(len(s),'+')
def bequal1():
s=entry.get()
#tkinter.messagebox.showinfo(message=s)
#分解s
import re
k=re.split('[+-]',s)
if '+' in s:
result=int(k[0])+int(k[1])
else:
result=int(k[0])-int(k[1])
entry.delete(0,len(entry.get()))
entry.insert(0,str(result))

root=tkinter.Tk()
root['width']=400
root['height']=320
entry=tkinter.Entry(root,text='',width=300)
entry.place(x=10,y=10,width=300,height=30)
b1=tkinter.Button(root,text='1',command=ba1)
b2=tkinter.Button(root,text='2',command=ba2)
b3=tkinter.Button(root,text='3',command=ba3)
b4=tkinter.Button(root,text='4',command=ba4)
b5=tkinter.Button(root,text='清空',command=ba5)
badd=tkinter.Button(root,text='+',command=badd1)
bequal=tkinter.Button(root,text='=',command=bequal1)
b1.place(x=10,y=60,width=50,height=50)
b2.place(x=10+50,y=60,width=50,height=50)
b3.place(x=10+50*2,y=60,width=50,height=50)
b4.place(x=10+50*3,y=60,width=50,height=50)
b5.place(x=10+50*5,y=60,width=50,height=50)

badd.place(x=10,y=60+50,width=50*2,height=50)
bequal.place(x=10+50*2,y=60+50,width=50*2,height=50)

root.mainloop()


原文:http://111.231.9.47/pythoncourse/PythonTotal.html



没有更多推荐了 [去首页]
image
文章
376
原创
293
转载
83
翻译
0
访问量
183399
喜欢
73
粉丝
5
码龄
7年
资源
3

文章目录

加载中...
1
1