
《物联网编程技术(Python)实验指导书
《物联网编程技术(Python)》 实验指导书

物联网编程技术(Python)目录适用教材:E实验一、Python安装与开发环境搭建6实验目的:.6实验内容:..6实验步骤:.6实验二、Python运算符、内置函数.8实验目的:..8实验内容:..8参考代码:8实验三、使用蒙特.卡罗方法计算圆周率近似值9实验目的:.9实验内容:9参考代码:9实验四、使用列表实现筛选法求素数..10实验目的:.10实验内容:10参考代码:.10实验五、使用集合实现筛选法求素数.11实验目的:..11实验内容:.11参考代码:..1实验六、理解浮点数运算的误差.12实验目的:.12实验内容:-12提示:..12实验七、小明爬楼梯13实验目的:13实验内容:.13参考代码:..13实验八、聪明的尼姆游戏(人机对战)14实验目的:.14实验内容:.14参考代码:..14.实验九、蒙蒂霍尔论游戏.16实验目的:.16实验内容:..16参考代码:..16实验十、猜数游戏。.18实验目的:.18实验内容:...18参考代码:.182
物联网编程技术(Python) 2 目录 适用教材:. 5 实验一、Python 安装与开发环境搭建. 6 实验目的:.6 实验内容:.6 实验步骤:.6 实验二、Python 运算符、内置函数. 8 实验目的:.8 实验内容:.8 参考代码:.8 实验三、使用蒙特.卡罗方法计算圆周率近似值. 9 实验目的:.9 实验内容:.9 参考代码:.9 实验四、使用列表实现筛选法求素数.10 实验目的:.10 实验内容:.10 参考代码:.10 实验五、使用集合实现筛选法求素数.11 实验目的:.11 实验内容:.11 参考代码:.11 实验六、理解浮点数运算的误差.12 实验目的:.12 实验内容:.12 提示:.12 实验七、小明爬楼梯.13 实验目的:.13 实验内容:.13 参考代码:.13 实验八、聪明的尼姆游戏(人机对战). 14 实验目的:.14 实验内容:.14 参考代码:.14 实验九、蒙蒂霍尔悖论游戏.16 实验目的:.16 实验内容:.16 参考代码:.16 实验十、猜数游戏.18 实验目的:.18 实验内容:.18 参考代码:.18

物联网编程技术(Python)实验十一、抓狐狸游戏20实验目的:...20实验内容:20参考代码:...20实验十二、汉诺塔问题.22实验目的:...22实验内容:22参考代码:..22实验十三、凯撒加密.23实验目的:...23实验内容:.23参考代码:..23实验十四、打字练习成绩评定..24实验目的:..24实验内容:24参考代码:...24实验十五、批量生成随机信息.25实验目的:..25实验内容:25参考代码:.25实验十六、自定义类模拟三维向量及其运算29实验目的:..29实验内容:.29参考代码:..2931实验十七、自定义类实现带超时功能队列结构实验目的:..31实验内容:31参考代码:.31实验十八、文本文件操作,33实验目的:.3.实验内容:.33参考代码:...33实验十九、磁盘垃圾文件清理器.34实验目的:.34.实验内容:.34参考代码:.34实验二十、Excel文件成绩处理35实验目的:..35实验内容:..35实验步骤:..35参考代码:.35实验二十一、Word文件操作..38实验目的:.383
物联网编程技术(Python) 3 实验十一、抓狐狸游戏.20 实验目的:.20 实验内容:.20 参考代码:.20 实验十二、汉诺塔问题.22 实验目的:.22 实验内容:.22 参考代码:.22 实验十三、凯撒加密.23 实验目的:.23 实验内容:.23 参考代码:.23 实验十四、打字练习成绩评定.24 实验目的:.24 实验内容:.24 参考代码:.24 实验十五、批量生成随机信息.25 实验目的:.25 实验内容:.25 参考代码:.25 实验十六、自定义类模拟三维向量及其运算. 29 实验目的:.29 实验内容:.29 参考代码:.29 实验十七、自定义类实现带超时功能队列结构. 31 实验目的:.31 实验内容:.31 参考代码:.31 实验十八、文本文件操作.33 实验目的:.33 实验内容:.33 参考代码:.33 实验十九、磁盘垃圾文件清理器.34 实验目的:.34 实验内容:.34 参考代码:.34 实验二十、Excel 文件成绩处理. 35 实验目的:.35 实验内容:.35 实验步骤:.35 参考代码:.35 实验二十一、Word 文件操作.38 实验目的:.38

物联网编程技术(Python)实验内容:38实验步骤:.38参考代码:.38.39实验二十二、tkinter版猜数游戏实验目的:..39实验内容:..39参考代码:.3943实验二十三、使用TCP协议实现智能聊天机器人实验目的:..43实验内容:..43参考代码:.43.43服务端代码(chatServer.py)客户端代码(chatClient.py):.44实验二十四、使用scrapy框架爬取山东各城市天气预报.46实验目的:.46实验内容:.46实验步骤:..46实验二十五、电影打分与推荐...51实验目的:51实验内容:..51参考代码:.51实验二十六、多线程快速复制目录树...53实验目的:.53实验内容:..53参考代码:..53进一步思考:.55实验二十七、Excel文件数据导入SQLite数据库.56实验目的:.56实验内容:.56参考代码:.56实验二十八、生成棋盘纹理图片.59.59实验目的:实验内容:.59参考代码:.59效果图:59实验二十九、暴力破解MD5值.60实验目的:.60实验内容:..0.参考代码:...60实验三十、数据分析与可视化综合实验61实验目的:.61实验内容:.61.参考代码:.624
物联网编程技术(Python) 4 实验内容:.38 实验步骤:.38 参考代码:.38 实验二十二、tkinter 版猜数游戏.39 实验目的:.39 实验内容:.39 参考代码:.39 实验二十三、使用 TCP 协议实现智能聊天机器人. 43 实验目的:.43 实验内容:.43 参考代码:.43 服务端代码(chatServer.py):.43 客户端代码(chatClient.py):. 44 实验二十四、使用 scrapy 框架爬取山东各城市天气预报.46 实验目的:.46 实验内容:.46 实验步骤:.46 实验二十五、电影打分与推荐.51 实验目的:.51 实验内容:.51 参考代码:.51 实验二十六、多线程快速复制目录树.53 实验目的:.53 实验内容:.53 参考代码:.53 进一步思考:.55 实验二十七、Excel 文件数据导入 SQLite 数据库.56 实验目的:.56 实验内容:.56 参考代码:.56 实验二十八、生成棋盘纹理图片.59 实验目的:.59 实验内容:.59 参考代码:.59 效果图:.59 实验二十九、暴力破解 MD5 值.60 实验目的:.60 实验内容:.60 参考代码:.60 实验三十、数据分析与可视化综合实验. 61 实验目的:.61 实验内容:.61 参考代码:.62

物联网编程技术(Python)实验一、Python安装与开发环境搭建实验目的:1、熟练掌握Python解释器安装与基本用法。2、熟练掌握使用pip命令安装Python扩展库。3、熟悉离线安装轮子文件的方法。实验内容:1、安装Python解释器。2、安装Python扩展库。实验步骤:1、打开Python官方网站http://www.python.org。2、下载Python3.5.x或Python3.6.x或Python3.7.x的最新版,至少安装其中两个。3、在开始菜单中找到成功安装的IDLE,输入下面的代码,确保IDLE运行正常。Python3.6.0Shell-区File Edit Shell Debug OptionsWindowHelpPython3.6.0(v3.6.0:41df79263a11,Dec232016,08:06:12)[MSCv.1900 64bit(AMD64)]onwin32Type"copyright","credits"or"licenseO"formore information.>>print(Helloworld)Hello world!>>>4、在资源管理器中进入Python安装目录的scripts子目录,然后按下Shift键,在空白处单击鼠标右键,在弹出来的菜单中选择“在此处打开命令窗口”进入命令提示符环境。如图所示:命令提示符C:(Python36|Scripts)5、使用pip命令在线安装Python扩展库numpy、pandas、scipy、matplotlib、jieba、openpyxl、pillow。安装openpyxl的命令如图所示:5
物联网编程技术(Python) 5 实验一、Python 安装与开发环境搭建 实验目的: 1、熟练掌握 Python 解释器安装与基本用法。 2、熟练掌握使用 pip 命令安装 Python 扩展库。 3、熟悉离线安装轮子文件的方法。 实验内容: 1、安装 Python 解释器。 2、安装 Python 扩展库。 实验步骤: 1、打开 Python 官方网站 http://www.python.org。 2、下载 Python 3.5.x 或 Python 3.6.x 或 Python 3.7.x 的最新版,至少安装其中两个。 3、在开始菜单中找到成功安装的 IDLE,输入下面的代码,确保 IDLE 运行正常。 4、在资源管理器中进入 Python 安装目录的 scripts 子目录,然后按下 Shift 键,在空白 处单击鼠标右键,在弹出来的菜单中选择“在此处打开命令窗口”进入命令提示符环境。如 图所示: 5、使用 pip 命令在线安装 Python 扩展库 numpy、pandas、scipy、matplotlib、jieba、 openpyxl、pillow。安装 openpyxl 的命令如图所示:

物联网编程技术(Python)元installopenpyxpyag8s/dc/g9/9c58d83d71093c0af5f90875f8595d2e9587fc36532a8bb347608cf0876174kB6es(openpyxl)(1.36viiblsitpenpyxi)(1.0. 1TAp0npyLocai1pip1cachelwhe1s117d/4713dad565d260e7909110623ba66783a2ad345eb76dde111yx1-2.5yx6、如果遇到安装不成功的扩展库,使用浏览器打开下面的网址下载whl文件进行离线安装:https://www.ifd.uci.edu/~gohlke/pythonlibs/7、在IDLE中使用import导入安装好的扩展库,验证是否安装成功。python3.6.0 ShellFile Edit Shell Debug Options Window HelpPython3.6.0(v3.6.0:41df79263a11,Dec232016,08:06:12)[MS0D64)lon win32"credits"or"license()"for more informatio"copyright"Type>>)importopenpyxlimportjiebaimportnumpyas np>>>6
物联网编程技术(Python) 6 6、如果遇到安装不成功的扩展库,使用浏览器打开下面的网址下载 whl 文件进行离线 安装:https://www.lfd.uci.edu/~gohlke/pythonlibs/ 7、在 IDLE 中使用 import 导入安装好的扩展库,验证是否安装成功

物联网编程技术(Python)实验二、Python运算符、内置函数实验目的:1、熟练运用Python运算符。2、熟练运用Python内置函数。实验内容:1、编写程序,输入任意大的自然数,输出各位数字之和。2、编写程序,输入两个集合setA和setB,分别输出它们的交集、并集和差集setA-setB。3、编写程序,输入一个自然数,输出它的二进制、八进制、十六进制表示形式。参考代码:1、num=input("请输入一个自然数:")print(sum(map(int, num)))2、setA=eval(input("请输入一个集合:"))setB=eval(input(再输入一个集合:))print(交集:‘,setA&setB)print('并集:',setAIsetB)print('setA-setB:',setA-setB)3、num=int(input(请输入一个自然数:"))print("二进制:,bin(num))print('八进制:,oct(num))print("十六进制:",hex(num))7
物联网编程技术(Python) 7 实验二、Python 运算符、内置函数 实验目的: 1、熟练运用 Python 运算符。 2、熟练运用 Python 内置函数。 实验内容: 1、编写程序,输入任意大的自然数,输出各位数字之和。 2、编写程序,输入两个集合 setA 和 setB,分别输出它们的交集、并集和差集 setA-setB。 3、编写程序,输入一个自然数,输出它的二进制、八进制、十六进制表示形式。 参考代码: 1、 num = input('请输入一个自然数:') print(sum(map(int, num))) 2、 setA = eval(input('请输入一个集合:')) setB = eval(input('再输入一个集合:')) print('交集:', setA & setB) print(' 并 集 :', setA | setB) print('setA-setB:', setA - setB) 3、 num = int(input('请输入一个自然数:')) print('二进制:', bin(num)) print('八进制:', oct(num)) print('十六进制:', hex(num))

物联网编程技术(Python)实验三、使用蒙特·卡罗方法计算圆周率近似值实验目的:1、理解蒙特·卡罗方法原理。2、理解for循环本质与工作原理。3、了解random模块中常用函数。实验内容:蒙特卡罗方法是一种通过概率来得到问题近似解的方法,在很多领域都有重要的应用,其中就包括圆周率近似值的计算问题。假设有一块边长为2的正方形木板,上面画一个单位圆,然后随意往木板上扔飞镖,落点坐标(x,y)必然在木板上(更多的时候是落在单位圆内),如果扔的次数足够多,那么落在单位圆内的次数除以总次数再乘以4,这个数字会无限逼近圆周率的值。这就是蒙特·卡罗发明的用于计算圆周率近似值的方法,如图所示。不--11编写程序,模拟蒙特·卡罗计算圆周率近似值的方法,输入掷飞镖次数,然后输出圆周率近似值。参考代码:fromrandomimportrandomtimes=int(input(请输入掷飞镖次数:")hits =0foriinrange(times):x=random()y=random()if x*x + y*y<= 1:hits += 1print(4.0 * hits/times)8
物联网编程技术(Python) 8 实验三、使用蒙特·卡罗方法计算圆周率近似值 实验目的: 1、理解蒙特·卡罗方法原理。 2、理解 for 循环本质与工作原理。 3、了解 random 模块中常用函数。 实验内容: 蒙特·卡罗方法是一种通过概率来得到问题近似解的方法,在很多领域都有重要的应用, 其中就包括圆周率近似值的计算问题。假设有一块边长为 2 的正方形木板,上面画一个单位圆, 然后随意往木板上扔飞镖,落点坐标(x, y)必然在木板上(更多的时候是落在单位圆内), 如果 扔的次数足够多,那么落在单位圆内的次数除以总次数再乘以 4,这个数字会无限逼近圆周率 的值。这就是蒙特·卡罗发明的用于计算圆周率近似值的方法,如图所示。 编写程序,模拟蒙特·卡罗计算圆周率近似值的方法,输入掷飞镖次数,然后输出圆周 率 近似值。 参考代码: from random import random times = int(input('请输入掷飞镖次数:')) hits = 0 for i inrange(times): x = random() y = random() if x*x + y*y <= 1: hits += 1 print(4.0 * hits/times)

物联网编程技术(Python)实验四、使用列表实现筛选法求素数实验目的:1、理解筛选法求解素数的原理。2、理解列表切片操作。3、熟练运用内置函数enumerate)。4、熟练运用内置函数filer()。5、理解序列解包工作原理。6、初步了解选择结构和循环结构。实验内容:编写程序,输入一个大于2的自然数,然后输出小于该数字的所有素数组成的列表。参考代码:maxNumber=int(input(请输入一个大于2的自然数:"))lst = list(range(2, maxNumber))#最大整数的平方根m = int(maxNumber**0.5)for index,value in enumerate(lst):#如果当前数字已大于最大整数的平方根,结束判断if value>m:break#对该位置之后的元素进行过滤lst[index+1:] = filter(lambda x: x%value != 0, lst[index+1:])print(lst)10
物联网编程技术(Python) 10 实验四、使用列表实现筛选法求素数 实验目的: 1、理解筛选法求解素数的原理。 2、理解列表切片操作。 3、熟练运用内置函数 enumerate()。 4、熟练运用内置函数 filer()。 5、理解序列解包工作原理。 6、初步了解选择结构和循环结构。 实验内容: 编写程序,输入一个大于 2 的自然数,然后输出小于该数字的所有素数组成的列表。 参考代码: maxNumber = int(input('请输入一个大于 2 的自然数:')) lst = list(range(2, maxNumber)) #最大整数的平方根 m = int(maxNumber**0.5) for index, value in enumerate(lst): #如果当前数字已大于最大整数的平方根,结束判断 if value > m: break #对该位置之后的元素进行过滤 lst[index+1:] = filter(lambda x: x%value != 0, lst[index+1:]) print(lst)

物联网编程技术(Python)实验五、使用集合实现筛选法求素数实验目的:1、理解求解素数的筛选法原理。2、理解Python集合对象的discard()方法。3、熟练运用列表推导式。4、理解for循环工作原理。实验内容:输入一个大于2的自然数,输出小于该数字的所有素数组成的集合。参考代码:maxNumber=int(input(请输入一个大于2的自然数:))numbers=set(range(2,maxNumber))#最大数的平方根,以及小于该数字的所有素数m=int(maxNumber**0.5)+1primesLessThanM = [p for p in range(2, m)if 0notin [p%dford inrange(2,int(p**0.5)+1)]]#遍历最大整数平方根之内的自然数for p in primesLessThanM:for i in range(2, maxNumber//p+1):#在集合中删除该数字所有的倍数numbers.discard(i*p)print(numbers)11
物联网编程技术(Python) 11 实验五、使用集合实现筛选法求素数 实验目的: 1、理解求解素数的筛选法原理。 2、理解 Python 集合对象的 discard()方法。 3、熟练运用列表推导式。 4、理解 for 循环工作原理。 实验内容: 输入一个大于 2 的自然数,输出小于该数字的所有素数组成的集合。 参考代码: maxNumber = int(input('请输入一个大于 2 的自然数:')) numbers = set(range(2, maxNumber)) # 最大数的平方根,以及小于该数字的所有素数 m = int(maxNumber**0.5)+1 primesLessThanM = [p for p in range(2, m) if 0 not in [p%d for d in range(2, int(p**0.5)+1)]] # 遍历最大整数平方根之内的自然数 for p in primesLessThanM: for i in range(2, maxNumber//p+1): # 在集合中删除该数字所有的倍数 numbers.discard(i*p) print(numbers)