物联基础及实战 2_第1页
物联基础及实战 2_第2页
物联基础及实战 2_第3页
物联基础及实战 2_第4页
物联基础及实战 2_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

物联网Python编程物联网Python编程实战学生工作学生工作页(参考代码)主编:李博、王艇学生:学号:班级:江苏电子信息职业学院2024.02目录31949实验2Python变量与数据类型 224431实验3分支结构 324906实验4循环结构 4105实验5字符串处理 63880实验6列表与元组操作 720484实验7字典与集合操作 929145实验8函数与模块操作 107180实验9文件操作 1330607实验10数据库操作(选做) 1331516实验11异常处理 15231实验12面向对象 161569实验13图形识别 176863实验14图形识别 1830500任务19人脸识别 1915544任务20物联网综合实战 21

实验2Python变量与数据类型1、已知圆的半径r=3.5,请编程计算圆的面积和周长importmath

r=float(input("请输入圆的半径:"))

P=2*math.pi*r

S=math.pi*r**2

print("半径:",r,"周长:",P,"面积:",S)#普通输出

print("半径:{:.2f},周长:{:.2f},面积:{:.2f}".format(r,P,S))#格式输出2、编程实现,输入一个华氏温度F输出对应的摄氏温度C,计算公式为:F=9×C/5+32或C=5×(F-32)/9tempType=input("请输入类型F(f)或者C(c):\n")value=eval(input("输入温度值:\n"))iftempTypein['F','f']:print("华氏温度为:{:.2f}F".format(value))C=(value-32)/9*5print("摄氏温度为:{:.2f}C".format(C))eliftempTypein['C','c']:print("摄氏温度为:{:.2f}C".format(value))F=9*value/5+32print("华氏温度为:{:.2f}F".format(F))else:print("输入类型错误!\n")3.编程实现,输入一个数字a,计算a+aa+aaa+aaaa的值,如输入9,输出11106print("方法1")

n=inut("请输入一个a")

s1=eval("%s%s%s%s"%(n,n,n,n))

s2=eval("%s%s%s"%(n,n,n))

s3=eval("%s%s"%(n,n))

s4=eval("%s"%n)

print(s1+s2+s3+s4)

print("方法2")

a=int(input("输入数值:"))#9

b=int(input("输入迭代次数:"))#4

tem=''

res=0

foriinrange(b):#b输入4

tem=tem+'1'#1,11,111,1111

res=res+a*int(tem)#0+9,(9+99),(9+99+999),(9+99+999+9999)

print(res)print("方法3")

a=int(input("请输入一个数字a:"))

count=int(input("输入几个数相加:"))

res=0

foriinrange(1,count+1):

t=0

forjinrange(i):

t=t+10**j

res=res+(a*t)

print(res)实验3分支结构输入一元二次方程的3个参数,计算方程的实数根,分别采用以下几种结构实现:(1)、顺序结构:直接输出两个实数根(2)、单分支:处理b2-4ac大于0(3)、双分支:处理b2-4ac大于等于0,小于0的情况(4)、多分支:处理b2-4ac大于0,等于0,小于0的情况(5)、分支嵌套提示:平方根可以采用pow(a,1/2)方式;也可以导入math包importmath,使用math.sqrt()函数importmath

a=float(input("请输入a的值:"))

b=float(input("请输入b的值:"))

c=float(input("请输入c的值:"))

ifa!=0:

delta=b**2-4*a*c

ifdelta<0:

print("无根")

elifdelta==0:

s=-b/(2*a)

print("唯一根x=",s)

else:

root=math.sqrt(delta)

x1=(-b+root)/(2*a)

x2=(-b-root)/(2*a)

print("x1=",x1,"\t","x2=",x2)实验4循环结构【课中】编程找出所有的水仙花数,水仙花数是指一个3位数,其各位数字的立方和刚好等于这三位数本身(例如:1^3+5^3+3^3=153)。num=input('请输入一个三位数:')num=int(num)#字符串转换为整型#取百位i=int(num/100)#print(type(i))#浮点型转换为整型#取十位j=int(num/10%10)#取个位k=int(num%10)result=i*i*i+j*j*j+k*k*kifresult==num:print(num,'是水仙花数')else:print(num,'不是水仙花数')【方法2】#分别用100~999这些数字一个一个判断targetList=[]targetList1=[]fornuminrange(100,1000):i=int(num/100)#取百位j=int(num/10%10)#取十位k=int(num%10)#取个位result=i**3+j**3+k**3ifresult==num:targetList.append(num)print('方式一找到水仙花数为:',targetList)fornuminrange(100,1000):result=pow(int(str(num)[0]),3)+pow(int(str(num)[1]),3)+pow(int(str(num)[2]),3)ifresult==num:targetList1.append(num)print('方式二找到的水仙花数为:',targetList1)1、判断一个字符串是不是回文。所谓回文就是从左到右,从右到左字符一样。【方法1】s=input('请输入一个字符串:')

result=True

foriinrange(len(s)//2):

ifs[i]!=s[-1-i]:

result=False

break

ifresult:

print('%s是一个回文数'%s)

else:

print('%s不是一个回文数'%s)【方法2】a=input("请输入一个字符串")

b=reversed(list(a))

iflist(b)==list(a):

print('回文')

else:

print('不是回文')【方法3】s=input()

ifs==s[::-1]:#

print("%s\nYes"%s)

else:

print("%s\nNo"%s)2、编程实现输出九九乘法表【方法一】for循环嵌套foriinrange(1,10):

forjinrange(1,i+1):print(j,'*',i,'=',i*j,end='\t')

print()【方法二】while循环嵌套i=1whilei<10:j=1#初始化内循环变量,因j每次都要从1开始,故j只能写在外循环内部与内循环平级whilej<i+1:print(j,'*',i,'=',i*j,end='\t')j+=1print()i+=1实验5字符串处理【课堂实验】两个字符串,从第一个字符串中删除第二字符串中所有字符。Str1=input('Str1:')

Str2=input('Str2:')

foriinStr1:

forjinStr2:

ifj==i:

Str1=Str1.replace(j,'')

print(Str1)1、编程实现,用户输入的一个字符串,请输出其全小写形式。print("方法1")

s=input()

ls=s.lower()

print(ls)#利用Unicode编码差

print("方法2")

defmyToLower(s):

t=""

foriinrange(len(s)):

ifs[i]>="A"ands[i]<="Z":

t=t+chr(ord("a")-ord("A")+ord(s[i]))

else:

t=t+s[i]

returnt

if__name__=='__main__':

print(myToLower("abcHJJ"))2、编程实现,用户输入一个数字,请采用宽度为18、右对齐方式打印输出,使用‘*‘填充print("方法1")

a=input("请输入一个数字:")

result='*'*int(18-len(a))+a

print("result:",result)

print("方法2")

str=input()

print('{:*>18}'.format(str))#>右对齐,<左对齐,^居中

print("方法3")

str=input()

print(a.rjust(18,'*'))#ljust左对齐,center居中3、编程实现,输入一个字符串s,其中包含多个减号‘-’。以字符减号‘-’分割s,并将其中首尾两段用加号‘+’组合后输出。str=input("输入一串字符串用-连接:")#this-is-python

strlist=str.split('-')

print(strlist[0]+"+"+strlist[-1])实验6列表与元组操作【课堂实验】(1)创建一个列表,依次存放每个月对应的天数。假设2月份的天数固定为28天。(2)根据用户输入的月份查询该月的天数并输出。1、编程实现,用户输入的3个整数,放入列表,并输出其中最大值。【方法1】list=input("请输入3个数用空格隔开").split("")

print(max(list))

【方法2】

defmax(*a):

m=a[0]

forxina:

ifx>m:

m=x

returnm

s,d,f=map(int,input().split())

print("最大值:",max(s,d,f))

if__name__=='__mai__':

x=input('输入若干数,空格隔开').split()

lst=[]

foriinx:

lst.append(int(i))

print(max(*lst))

【方法3】

defmax(*a):

m=a[0]

forxina:

ifx>m:

m=x

returnm

if__name__=='__main__':

a=input("输入:")

print(max(*a))【方法4】print('输入第一个整数')

a=int(input())

print('输入第二个整数')

b=int(input())

print('输入第三个整数')

c=int(input())

list1=[a,b,c]

print('最小值是:',min(list1))2、编程实现:假设某校有3个办公室均有足够的空余工位,现在有8位老师等待分配,请编写程序,完成8位老师办公室的随机分配。【简单输出】importrandomoffices=[[],[],[]]teachers=['Liu','Li','Zhang','xiaoli','Pan','Wang','zhao','diao']forteacherinteachers:index=random.randint(0,2)#index的值可能是0,1,2offices[index].append(teacher)print(offices)【格式化输出】importrandomoffices=[[],[],[]]teachers=['Liu','Li','Zhang','xiaoli','Pan','Wang','zhao','diao']forteacherinteachers:index=random.randint(0,2)offices[index].append(teacher)i=1forofficeinoffices:print(“第%d个办公室人数:%d,名单如下:"%(i,len(office)))forteacherinoffice:print(teacher,end='')print('\n'+'-'*30)i+=1实验7字典与集合操作小明,小刚参加考试小明考了语文,数学,英语,一共考了287分,小刚考了语文,体育,数学,一共考了249分请从上面的描述中提取数据,存储到字典中,可以根据姓名获取这个人参与的考试种类和总分数。【方法1】examResult={"xiaoming":{"subjects":["语文","数学","英语"],"score":287},

"小刚":{"subjects":["语文","体育","数学"],"score":249}}

print("小明的考试类别及总分",examResult["xiaoming"]["subjects"],examResult["xiaoming"]["score"])

print("小刚的考试类别及总分",examResult["小刚"]["subjects"],examResult["小刚"]["score"])【方法2】a1={'type':"语文,数学,英语",'grade':287}a2={'type':"语文,体育,数学",'grade':249}name=input("请输入姓名:")ifname=='小明':print(a1['type'],a1['grade'])elifname=='小刚':print(a2['type'],a2['grade'])else:print("查无此人!")【方法3】dict={"小明":("语文数学英语",287),"小刚":("语文体育数学",249)}name=input("请输入学生姓名:")keys=dict.keys()ifnamenotinkeys:print("查无此人")else:print(dict[name])实验8函数与模块操作编写一个函数,求输入数据的绝对值deffabs(n):

ifn>=0:

returnn

else:

return-n

x=input("请输入一个数据:")

x=float(x)

print(fabs(x))编写一个函数,获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者【方法一】defodd(L):

returnL[1::2]#切片技术

list=[3,1,5,9,1,0]

print(odd(list))

print(list)#list本身没有变化【方法二】defgetodd(l):

list=[]

foriinrange(len(l)):

ifi%2!=0:

list.append(l[i])

returnlist

list=[3,1,5,9,1,0]

print(getodd(list))编写一个函数,实现简单的计算器功能(传入两个数字和计算符,进行相应的计算)【方法1】defcal(exp):

if"+"inexp:

a,b=exp.split("+")

returnfloat(a)+float(b)

elif"-"inexp:

a,b=exp.split("-")

returnfloat(a)-float(b)

elif"*"inexp:

a,b=exp.split("*")

returnfloat(a)*float(b)

elif"/"inexp:

a,b=exp.split("/")

returnfloat(a)/float(b)

s=input("输入计算公式:")#例如输入3*8

print(cal(s))【方法2】defcal(x,y,f):

iff=="+":

returnx+y

eliff=="-":

returnx-y

eliff=="*":

returnx*y

eliff=="/":

returnx/y

else:

print("运算符输入错误!")

a=input("请输入第1个数据:")#例如输入3

a=float(a)

b=input("请输入第2个数据:")#例如输入8

b=float(b)

symbol=input("请输入运算符:")#最后输入*

print(cal(a,b,symbol))【方法3】defcal(a,b,symbol):

ifsymbol=="+":

print("%s%s%s=%s"%(a,symbol,b,a+b))

elifsymbol=="-":

print("%s%s%s=%s"%(a,symbol,b,a-b))

elifsymbol=="*":

print("%s%s%s=%s"%(a,symbol,b,a*b))

elifsymbol=="/":

ifb==0:

print("除数不能为零")

else:print("%s%s%s=%s"%(a,symbol,b,a/b))

else:

print("符号输入有误,请重新输入!!!")

a=int(input("请输入第一个数:"))

b=int(input("请输入第二个数:"))

symbol=input("请输入四则运算符号:(+-*/):")

cal(a,b,symbol='+')【方法4】methods={'1':'+','2':'-','3':'*','4':'/'}print("简单计算器实现\n""1代表相加\n""2代表相减\n""3代表相乘\n""4代表相除\n")defcalc(x,y,method):method_f=methods[method]returneval("{}{}{}".format(x,method_f,y))method=input("运算符:")a=int(input('数字1:'))b=int(input('数字2:'))print(calc(a,b,method))实验9文件操作【课中任务】将“7月下旬入库表.xlsx”表中第一个sheet页中所有第二列的元素写入到新的Excel表test.xlsx中。创建文件data.txt,向文件写入1000行数据,每行存放一个1~100之间的整数importrandom

f=open("data.txt","wt")

foriinrange(100):

n=random.randint(1,100)

f.write(str(n)+"\n")统计白居易的《长恨歌》中“长”“君王”出现的次数。f=open("chg.txt","rt",encoding="utf_8")

content=f.read()

num1=content.count("长")

num2=content.count("君王")

print(num1,num2)实验10数据库操作(选做)1、用sqlite创建一张学生信息表,表中包含学号、姓名、性别、年龄、班级、专业。2、向表中插入10条数据3、查询所有学生信息4、查询所有男生信息5、统计每个专业的人数6、删除年龄小于18岁的学生importsqlite3

sql="""

createtablestudents

(

pNovarchar(16)primarykey,

pNamevarchar(16),

pGendervarchar(8),

pAgeint,

pClassvarchar(16),

pSpecvarchar(16)

)

"""

try:

con=sqlite3.connect("students.db")#建立连接

cursor=con.cursor()#获取游标对象

cursor.execute(sql)#执行SQL

cursor.execute("insertintostudents(pNo,pName,pGender,pAge,pClass,pSpec)values('31020101','A','男',20,'310201','软件技术')")

cursor.execute("insertintostudents(pNo,pName,pGender,pAge,pClass,pSpec)values('32020101','B','男',21,'320201','移动开发')")

cursor.execute("insertintostudents(pNo,pName,pGender,pAge,pClass,pSpec)values('33020101','C','女',16,'330201','网络技术')")

cursor.execute("insertintostudents(pNo,pName,pGender,pAge,pClass,pSpec)values('33020102','D','男',20,'330201','网络技术')")

cursor.execute("insertintostudents(pNo,pName,pGender,pAge,pClass,pSpec)values('31020102','E','女',20,'310201','软件技术')")

cursor.execute("insertintostudents(pNo,pName,pGender,pAge,pClass,pSpec)values('32020102','F','女',22,'320201','移动开发')")

cursor.execute("insertintostudents(pNo,pName,pGender,pAge,pClass,pSpec)values('33020103','G','男',21,'330201','网络技术')")

cursor.execute("insertintostudents(pNo,pName,pGender,pAge,pClass,pSpec)values('31020103','H','男',20,'310201','软件技术')")

cursor.execute("insertintostudents(pNo,pName,pGender,pAge,pClass,pSpec)values('32020103','I','女',21,'310201','移动开发')")

cursor.execute("insertintostudents(pNo,pName,pGender,pAge,pClass,pSpec)values('31020104','J','男',20,'310201','软件技术')")

cursor.execute("select*fromstudents")

rows=cursor.fetchall()

forrowinrows:

print(row[0],row[1],row[2],row[3],row[4],row[5])

exceptExceptionaserr:

print(err)

try:

cursor.execute("select*fromstudentswherepGender='男'")

rows=cursor.fetchall()

forrowinrows:

print(row[0],row[1],row[2],row[3],row[4],row[5])

exceptExceptionaserr:

print(err)

try:

cursor.execute("selectcount(*)fromstudentswherepSpec='软件技术'")

rows=cursor.fetchall()

print("软件技术专业"+str(rows[0][0])+"人")

cursor.execute("selectcount(*)fromstudentswherepSpec='网络技术'")

rows=cursor.fetchall()

print("网络技术专业"+str(rows[0][0])+"人")

cursor.execute("selectcount(*)fromstudentswherepSpec='移动开发'")

rows=cursor.fetchall()

print("移动开发专业"+str(rows[0][0])+"人")

cursor.execute("deletefromstudentswherepAge<18")

exceptExceptionaserr:

print(err)

mit()#提交操作

con.close()#关闭连接实验11异常处理写一个模拟计算器:输入三个变量num1,mark,num2。根据mark的值选择运算类型,mark值为0,调用getSum方法,计算num1和num2的和;mark值为1,调用getDifference方法,计算num1和num2的差;mark值为2,调用getProduct方法,计算num1和num2的乘积;mark值为3,调用getQuotient方法,计算num1和num2的商;mark值为4,调用getRemainder方法,计算num1和num2的余数;对在计算过程中进行异常处理。defgetSum(a,b):

returna+b

defgetDifference(a,b):

returna-b

defgetProduct(a,b):

returna*b

defgetQuotient(a,b):

returna/b

defgetRemainder(a,b):

returna%b

whileTrue:

try:

num1=input("请输入第1个数据:")

num1=float(num1)

mark=input("请输入第2个数据:")

mark=int(mark)

ifmark<0ormark>4:

raiseException("请输入0-4之间的整数")

num2=input("请输入第3个数据:")

num2=float(num2)

break

exceptExceptionaserr:

print(err)

try:

ifmark==0:

print(getSum(num1,num2))

elifmark==1:

print(getDifference(num1,num2))

elifmark==2:

print(getProduct(num1,num2))

elifmark==3:

print(getQuotient(num1,num2))

else:

print(getRemainder(num1,num2))

exceptExceptionaserr:

print(err)实验12面向对象1、定义一个计算机类MyComputer它包含一个类属性:产量;三个对象属性:CPU类型(字符串),RAM内存大小(整型),硬盘大小(整型);设计它的构造函数初始化并递增产量,设计一个显示电脑信息的函数,建立对象并调用显示函数显示电脑信息。

类添加一个输出产量的方法,添加到对象中,并调用测试。importtypes

classMyComputer:

count=0

def__init__(self,cpuType,ramSize,diskSize):

self.cpuType=cpuType

self.ramSize=ramSize

self.diskSize=diskSize

MyComputer.count+=1

defgetinfo(self):

print("CPU,RAM,Harddiskofthiscomputerareasfolloews:{},{},{}"

.format(self.cpuType,self.ramSize,self.diskSize))

deftotal(self):

print("Totalcomputer:{}".format(MyComputer.count))

#创建对象

computer=MyComputer("Intel(R)Core(TM)i5-10210UCPU@1.60GHz2.11GHz",16,500)

computer.getinfo()

#动态添加成员

computer.total=types.MethodType(total,computer)

computer.total()实验13图形识别【编程实现】使用Python打开指定的图片的文件,分析图片中矩形、圆形、正方形、三角形的数量。importcv2importnumpyasnp#定义形状检测函数defShapeDetection(img):contours,hierarchy=cv2.findContours(img,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_NONE)#寻找轮廓点forobjincontours:area=cv2.contourArea(obj)#计算轮廓内区域的面积cv2.drawContours(imgContour,obj,-1,(255,0,0),4)#绘制轮廓线perimeter=cv2.arcLength(obj,True)#计算轮廓周长approx=cv2.approxPolyDP(obj,0.02*perimeter,True)#获取轮廓角点坐标CornerNum=len(approx)#轮廓角点的数量x,y,w,h=cv2.boundingRect(approx)#获取坐标值和宽度、高度#轮廓对象分类ifCornerNum==3:objType="triangle"elifCornerNum==4:ifw==h:objType="Square"else:objType="Rectangle"elifCornerNum>4:objType="Circle"else:objType="N"cv2.rectangle(imgContour,(x,y),(x+w,y+h),(0,0,255),2)#绘制边界框cv2.putText(imgContour,objType,(x+(w//2),y+(h//2)),cv2.FONT_HERSHEY_COMPLEX,0.6,(0,0,0),1)#绘制文字path='C:/Users/Administrator/Desktop/tuxing.jpg'img=cv2.imread(path)imgContour=img.copy()imgGray=cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)#转灰度图imgBlur=cv2.GaussianBlur(imgGray,(5,5),1)#高斯模糊imgCanny=cv2.Canny(imgBlur,60,60)#Canny算子边缘检测ShapeDetection(imgCanny)#形状检测cv2.imshow("Originalimg",img)cv2.imshow("imgGray",imgGray)cv2.imshow("imgBlur",imgBlur)cv2.imshow("imgCanny",imgCanny)cv2.imshow("shapeDetection",imgContour)cv2.waitKey(0)实验14图形识别使用MyQR库制作一个包含个人手机号码及学号的个性动态二维码。fromMyQRimportmyqrmyqr.run(words="TestQR",picture="./1.gif",colorized=True)说明,“1.gif”动态存在在工程目录下,与以上代码的文件在同级2编程程序,解析动态二维码importosfrompyzbar.pyzbarimportdecodeimportcv2ascvfromPILimportImagefromPILimportImageSequencedefQRParsing(filePath):ifos.path.isfile(filePath):#判断是否是本地文件img=Image.open(filePath)#读取二维码动态图片i=0forframeinImageSequence.Iterator(img):#获取动态二维码图片中的第一帧frame.save("frame%d.png"%i)i+=1ifi>=1:breakimg=cv.imread("./frame0.png")#读取动态二维码第一帧图片texts=decode(img)#解码验证码图片fortextintexts:#遍历解码数据qrInfo=text.data.decode("utf-8")#将内容解码成指定格式print(qrInfo)#打印二维码信息else:#判断不是本地文件print("图片不存在")if__name__=='__main__':filePath="./2_qrcode.gif"QRParsing(filePath)任务19人脸识别【编程实现】在图像中指定位置绘制出矩形框。importcv2ascvimportnumpyasnpimg=cv.imread("D:/pic/lena.jpg")#读取一幅图像rows,cols=img.shape[:2]#获取图像的宽和高#在原始图像上绘制三个矩形img=cv.rectangle(img,(50,50),(rows-200,cols-200),(255,255,0),3)img=cv.rectangle(img,(70,70),(rows-100,cols-150),(255,0,255),5)img=cv.rectangle(img,(100,100),(rows-150,cols-100),(0,255,255),7)cv.imshow("img",img)cv.waitKey()cv.destroyAllWindows()【编程实现】使用OpenCV中提供的cv2.CascadeClasfier.detectMultiScale()函数检测一幅图像中的人脸。importcv2ascvimage=cv.imread("D:/pic/face.jpg")#读取一幅图像#获取XMI文件,加载人脸检测器faceCascade=cv.CascadeClassifier(r'D:/envs/python/Lib/sitepackages/cv2/data/haarcascade_frontalface_default.xml')gray=cv.cvtColor(image,cv.COLOR_BGR2GRAY)#转为灰度图#实现

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论