Python程序设计基础(微课版 在线练习与考试软件版)课件 第10章 高级应用开发_第1页
Python程序设计基础(微课版 在线练习与考试软件版)课件 第10章 高级应用开发_第2页
Python程序设计基础(微课版 在线练习与考试软件版)课件 第10章 高级应用开发_第3页
Python程序设计基础(微课版 在线练习与考试软件版)课件 第10章 高级应用开发_第4页
Python程序设计基础(微课版 在线练习与考试软件版)课件 第10章 高级应用开发_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

第10章

高级应用开发1本章学习目标了解使用标准库tkinter设计与开发GUI程序界面的基本思路了解多线程编程技术在GUI程序开发中的应用了解网络爬虫程序工作原理了解pstuil、pillow、openai、zhipuai等扩展库的功能与应用了解常用AI大模型的接口调用方法和注意事项了解并警惕AI大模型“幻觉”可能带来的问题210.1tkinter用户界面开发tkinter是用来支持GUI设计的标准库,提供了窗体、标签、文本框、组合框、单选钮、复选框、按钮、菜单、对话框等大量组件。310.1.1电子时钟例10-1

编写程序,实现电子时钟。使用Label组件显示日期和时间,使用多线程编程技术支持更新日期时间的同时响应界面的鼠标操作。code\例10-1.py410.1.2网络流量监视器例10-2

编写程序,使用标准库tkinter设计椭圆形半透明窗口,使用扩展库psutil计算本机网络上行和下行速度,然后实时显示到程序窗口上。可以使用鼠标左键按住并拖动显示网速的窗口,右键单击时退出程序。code\例10-2.py510.1.3旋转图片式验证码验证码主要是为了确认是人在完成某个操作,用于防范自动发贴机和网络爬虫程序之类的自动化操作。目前常用的验证码类型有:(1)在图片中显示进行了错切和旋转变换的字母或数字然后加上噪点和线条来加大识别难度;(2)使用问答题进行验证,用户需要答对随机抽取的题目;(3)旋转图片式验证码,把随机给出的几幅图像旋转至相同方向或特定的方向;(4)依次单击图像中具有某些特征的图案;(5)拖动小图像到指定位置完成大图像的拼图。610.1.3旋转图片式验证码例10-3

编写程序,设计旋转图片式验证码,在30秒内把4幅图像旋转为相同的方向则认为通过验证,否则认为没通过验证。code\例10-3.py710.2网络爬虫程序网络爬虫是一种常用的数据采集技术,主要用来批量采集网页上的文字以及图片、视频等不同类型的文件,自动化完成人类采集网页数据的任务,把人类从耗时的重复操作中解放出来。编写网络爬虫程序时,一定要认真分析网页源代码,这对于程序运行和调试非常重要。每个网络爬虫程序都是针对特定网站特定目的编写的,网站改版、采集目标发生改变时很可能造成之前的程序无法正常运行,必须重新分析网页源代码并相应地修改程序。810.2.1爬取微信公众号文章里的图片标准库urllib提供了request、response、parse、error和robotparser五个模块,很好地支持了读取网页内容所需要的功能。request是最常用的一个模块,其中最常用的是urlopen()函数和Request类,urlopen()函数用来打开指定的URL或者Request对象,Request类用来构造请求对象并允许自定义头部信息。借助于标准库urllib,结合Python字符串方法、正则表达式、文件操作有关知识,必要的时候再结合多线程/多进程编程技术,可以完成采集网页内容的大部分任务,这些也是理解和使用其他爬虫扩展库和爬虫框架的基础。910.2.1爬取微信公众号文章里的图片例10-4

编写网络爬虫程序,批量下载微信公众号“Python小屋”中文章“《Python程序设计(第4版)》章节习题答案(65页)”里的所有图片,保存为本地PNG格式的图片文件,以从1开始的数字编号命名。code\例10-4.py1010.2.2爬取某高校官网全部新闻Scrapy是一套基于Twisted的异步处理框架,是纯Python实现的开源爬虫框架,支持使用XPath选择器和CSS选择器从网页上快速提取指定的内容,对编写网络爬虫程序需要的功能进行了高度封装,用户甚至不需要懂太多原理,只需要按照标准套路创建爬虫项目之后填写几个文件的内容就可以轻松完成一个爬虫程序,使用非常简单,大幅度降低了编写网络爬虫程序的门槛。1110.2.2爬取某高校官网全部新闻例10-5

编写网络爬虫程序,采集某高校网站新闻模块所有新闻,每个新闻中的文本保存至以新闻标题为名的文本文件中,并保存所有新闻中的图片。把代码保存为文件“例10-5.py”,然后切换到命令提示符环境cmd或PowerShell,执行命令“scrapyrunspider例10-5.py”运行爬虫程序,会自动创建子文件夹“新闻”并保存文本文件和图像文件。由于新闻数量较多,可以随时使用组合键Ctrl+C停止程序。code\例10-5.py1210.2.3文件下载断点续传所谓断点续传是指,由于网络故障或其他原因导致下载过程中断后,再次启动下载时可以继续之前的进度而不需要从头重新下载。技术要点为:(1)自定义请求对象的头部信息,使用Range字段来指定要获取的数据起始字节位置,如果成功就从该位置开始读取数据。(2)在写入本地文件时使用'ab'模式而不是使用'wb'模式,这样可以把读取到的网络文件数据追加到本地文件已有数据的后面,不会覆盖已有的文件内容。1310.2.3文件下载断点续传例10-6

编写网络爬虫程序,实现支持断点续传的网络文件下载功能。code\断点续传.py1410.3调用DeepSeek大模型接口可以通过标准库http.client、urllib以及openai、deepseek、requests等扩展库调用DeepSeek大模型接口。登录DeepSeek官方网站,注册账号并创建APIKey,然后就可以运行本节的程序了。1510.3调用DeepSeek大模型接口目前DeepSeek主要有适用于日常对话、内容创作、文本润色的DeepSeek-V3模型和适用于数学推理、科学推理、计算与编程、研究辅助的DeepSeek-R1模型,分别通过设置参数model='deepseek-chat'和model='deepseek-reasoner'进行调用。base_url也是一个重要参数,不同API的地址不一样,可以查阅官方文档了解全部地址。另一个关键参数是temperature,该参数不同的值适用于不同的场景,一般建议代码生成/数学解题或类似的场景设置为0.0,数据抽取/分析或类似的场景设置为1.0,翻译或通用对话场景设置为1.3,创意类写作/诗歌创作场景设置为1.5。1610.3调用DeepSeek大模型接口不管使用哪个大模型,都应尽量提供高质量的提示词,提供的信息越详细、越准确、限定条件越多,大模型给出的答案相对来说也会越靠谱,但对于某些问题而言输出内容的质量仍是不可控的。要特别注意和警惕“幻觉”问题,仔细辨别大模型的思维链有没有技术漏洞和逻辑陷阱,过程和答案有没有一本正经地胡说八道、伪造和篡改,不能完全相信大模型给出的内容,使用者需要拥有足够的验证和辨别能力。在AI时代,应更加注重提高个人知识储备量和进行逻辑、思维训练,要不然很容易被各种大模型忽悠和欺骗,这也是必须学好基础知识的重要原因。1710.3.1使用扩展库openai调用DeepSeek大模型接口例10-7

编写程序,查看并列出DeepSeek支持的模型。fromopenaiimportOpenAIapi_key='自己创建的APIkey'client=OpenAI(api_key=api_key,base_url='')print(client.models.list())1810.3.1使用扩展库openai调用DeepSeek大模型接口例10-8

编写程序,调用DeepSeek接口计算Python表达式的值。fromopenaiimportOpenAIapi_key='自己创建的APIkey'client=OpenAI(api_key=api_key,base_url='')response=pletions.create(model='deepseek-reasoner',temperature=0.0,stream=False,messages=[{'role':'user','content':"Python表达式'3==3isnotTrue'的值是什么?为什么?你用Python验证一下,然后再告诉我,拒绝胡编乱造。"}])print(response.choices[0].message.content)1910.3.1使用扩展库openai调用DeepSeek大模型接口例10-9

编写程序,调用DeepSeek接口填充Python程序中缺失的部分。fromopenaiimportOpenAIapi_key='自己创建的APIkey'client=OpenAI(api_key=api_key,base_url='/beta')response=pletions.create(model='deepseek-chat',prompt='deffib(a):',suffix='returnfib(a-1)+fib(a-2)',max_tokens=128)print(response.choices[0].text)2010.3.1使用扩展库openai调用DeepSeek大模型接口例10-10

编写程序,调用DeepSeek推理模型接口实现追问和多轮问答。code\例10-10.py2110.3.1使用扩展库openai调用DeepSeek大模型接口例10-11

编写程序,调用DeepSeek对话模型实现多轮对话。fromopenaiimportOpenAIapi_key='自己创建的APIkey'client=OpenAI(api_key=api_key,base_url="")messages=[{"role":"user","content":"请直接回答:世界上最长的河流是什么?"}]response=pletions.create(model="deepseek-chat",messages=messages)messages.append(response.choices[0].message)print(f"第一个问题答案:{response.choices[0].message.content}")messages.append({"role":"user","content":"第三长的是什么呢?"})response=pletions.create(model="deepseek-chat",messages=messages)print(f"补充问题答案:{response.choices[0].message.content}")2210.3.2使用扩展库requests调用DeepSeek大模型接口例10-12

编写程序,查询DeepSeek账号的余额。importrequestsapi_key='自己创建的APIkey'url='/user/balance'headers={'Accept':'application/json','Authorization':f'Bearer{api_key}'}response=requests.request('GET',url,headers=headers)print(response.text)2310.3.2使用扩展库requests调用DeepSeek大模型接口例10-13

编写程序,调用DeepSeek大模型接口计算Python表达式的值。importrequestsimportjsonapi_key='自己创建的APIkey'url='/chat/completions'payload=json.dumps({'messages':[{'content':'你是一个非常有经验的Python高手','role':'system'},{'content':'Python表达式3.9>3.11的值是什么?','role':'user'}],'model':'deepseek-chat','frequency_penalty':0,'max_tokens':2048,'presence_penalty':0,'response_format':{'type':'text'},'stop':None,'stream':False,'stream_options':None,'temperature':1,'top_p':1,'tools':None,'tool_choice':'none','logprobs':False,'top_logprobs':None})headers={'Content-Type':'application/json','Accept':'application/json','Authorization':f'Bearer{api_key}'}response=requests.request('POST',url,headers=headers,data=payload)print(json.loads(response.text)['choices'][0]['message']['content'])2410.3.3使用标准库http.client调用DeepSeek大模型接口例10-14

编写程序,输出DeepSeek支持的模型清单。fromhttpimportclientapi_key='自己创建的APIkey'headers={'Accept':'application/json','Authorization':f'Bearer{api_key}'}conn=client.HTTPSConnection('')conn.request('GET','/models',headers=headers)res=conn.getresponse()data=res.read()print(data.decode('utf-8'))conn.close()2510.3.3使用标准库http.client调用DeepSeek大模型接口例10-15

编写程序,调用DeepSeek大模型接口实现多轮问答和追问。code\例10-15.py2610.3.4使用标准库urllib调用DeepSeek大模型接口例10-16

编写程序,调用DeepSeek接口获取所有模型信息。fromurllib.requestimportRequest,urlopenapi_key='自己创建的APIkey'headers={'Accept':'application/json','Authorization':f'Bearer{api_key}'}req=Request(url='/models',headers=headers)withurlopen(req)asfp:print(fp.read().decode('utf8'))2710.3.4使用标准库urllib调用DeepSeek大模型接口例10-17

编写程序,调用DeepSeek接口求解百钱买百鸡问题。fromjsonimportdumps,loadsfromurllib.requestimportRequest,urlopenapi_key='自己创建的APIkey'headers={'Accept':'application/json','Authorization':f'Bearer{api_key}','Content-Type':'application/json'}data=dumps({'messages':[{'role':'system','content':'你是一个非常有经验的Python高手'},{'role':'user','content':'编写Python程序求解百钱买百鸡问题,要求代码高效、优雅。'}],'model':'deepseek-chat','temperature':0}).encode('utf8')req=Request(url='/chat/completions',headers=headers,data=data,method='POST')withurlopen(req)asfp:content=fp.read().decode('utf8')print(loads(content)['choices'][0]['message']['content'])2810.3.5使用扩展库deepseek调用DeepSeek大模型接口例10-18

编写程序,调用DeepSeek大模型接口优化Python程序。fromdeepseekimportDeepSeekAPIapi_client=DeepSeekAPI('自己创建的APIkey')msg='''把模型参数temperatur设置为0.0,然后求解问题:下面的Python程序用来求解百钱买百鸡问题,公鸡5元1只,母鸡3元1只,小鸡1元3只,100元钱买100只鸡,有哪些购买方案。请给出代码优化方案和结果,不需要过多解释。forxinrange(21): #假设能买x只公鸡,x最大为20foryinrange(34): #假设能买y只母鸡,y最大为33z=100-x-y #假设能买z只小鸡ifz%3==0and(5*x+3*y+z//3==100):print(f'公鸡{x}只,母鸡{y}只,小鸡{z}只')'''response

温馨提示

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

评论

0/150

提交评论