Python入门第六课
上节课程学习了关于Python中的面向对象基础部分下面我们将继续学习Python的核心知识一、异常**异常**就是程序运行过程中出现的错误会中断程序的正常执行1.1异常处理**①不做处理**整个程序因为一个BUG中断执行②捕获异常按照我们自己的处理方式处理完程序继续运行–捕获方式示例# 异常try:print( )# print(my_name)print(1/0)print( )exceptNameErrorase:print(名字不存在异常信息,e)exceptZeroDivisionErrorase:print(除数不能为0异常信息,e)1.2异常传递异常传递就是异常在函数调用中层层上报的过程直到有人处理它或者程序奔溃二、AI项目基础大模型部署分为2.1本地部署ollama是一个运行在本地、管理大语言模型的工具。官网https://ollama.com直接下载即可然后可以在官网找到要下载的AI模型我这里选择的时deepseek的r1模型根据自己电脑的硬件情况来选择按照版本2.2官方开放 API首先去deepseek官网创建一个APIkey创建好的如下图所示2.3代码调用DeepSeek在DeepSeek的API文档当中就有使用python代码调用deepseek网址https://api-docs.deepseek.com/zh-cn/我把代码直接复制在这里importosfromopenaiimportOpenAI# 创建与大模型交互的客户端对象clientOpenAI(# DEEPSEEK_API_KEY是环境变量的名字值就是DeepSeekAPIKey的值api_keyos.environ.get(DEEPSEEK_API_KEY),base_urlhttps://api.deepseek.com)# 与大模型进行交互responseclient.chat.completions.create(# 所调用的模型modeldeepseek-v4-pro,messages[{role:system,content:You are a helpful assistant},{role:user,content:你是谁},],streamFalse,reasoning_efforthigh,extra_body{thinking:{type:enabled}})# 输出大模型返回的结果print(response.choices[0].message.content)2.4提示词工程**提示词**是引导大模型进行内容生成的命令三、AI项目实战3.1streamlit以下是streamlit页面importstreamlitasst st.title(stream第一个程序)st.header(一级标题)st.subheader(二级标题)运行指令在pycharm终端运行streamlit run 文件名3.1.1streamlit基础用法我将streamlit的基础用法写在了python代码块中# 段落文字st.write(这是一段文字)st.write(这是一段文字)st.write(这是一段文字)# 图片st.image(../resources/logo.png,width300)# 音频st.audio(../resources/news.mp3,width300)# 视频st.video(../resources/news.mp4,width300)# logost.logo(../resources/logo.png)# 表格student_data{姓名:[王林,李慕婉,贝罗,莫厉海,石萧],学号:[20260001,20260002,20260003,20260004,20260005],语文:[98,90,59,29,80],数学:[88,78,65,70,39],英语:[99,89,87,59,62],总分:[285,257,211,158,181]}st.table(student_data)# 普通输入框namest.text_input(请输入)st.write(name)# 密码输入框passwordst.text_input(请输入密码,typepassword)st.write(f你输入的密码为{password})# 单选按钮st.radio(请输入您的性别,[男,女,未知])3.1.2streamlit页面布局# 设置页面的配置项st.set_page_config(page_titlestreamlit页面,page_icon,# 网页的布局layoutcentered,# 控制侧边栏initial_sidebar_stateexpanded,menu_items{Get Help:https://www.extremelycoolapp.com/help,Report a bug:https://ollama.com,About:# This is a header. This is an *extremely* cool app!})3.2开发项目AI伴侣系统代码importstreamlitasstimportosfromopenaiimportOpenAIimportdatetimeimportjson# 脚本文件所在目录(用于定位 logo 等资源文件,避免依赖运行时的当前工作目录)BASE_DIRos.path.dirname(os.path.abspath(__file__))# 设置页面的配置项st.set_page_config(page_titleAI智能伴侣 ,page_icon,# 网页的布局layoutwide,# 控制侧边栏initial_sidebar_stateexpanded,menu_items{})# 保存会话信息的函数defsave_session():ifst.session_state.current_session:# 构建新的会话对象session_data{current_session:st.session_state.current_session,messages:st.session_state.messages,nick_name:st.session_state.nick_name,personality:st.session_state.personality}# 如果session目录不存在则创建ifnotos.path.exists(session):os.makedirs(session)# 保存会话数据withopen(fsession/{st.session_state.current_session}.json,w,encodingutf-8)asf:json.dump(session_data,f,ensure_asciiFalse,indent4)# 加载所有的列表信息defload_sessions():session_list[]#加载session目录下的所有json文件ifos.path.exists(session):file_listos.listdir(session)forfilenameinfile_list:iffilename.endswith(.json):session_list.append(filename[:-5])session_list.sort(reverseTrue)#降序排序、returnsession_list# 加载指定会话信息defload_session(session_name):try:ifos.path.exists(fsession/{session_name}.json):# 读取会话数据withopen(fsession/{session_name}.json,r,encodingutf-8)asf:session_datajson.load(f)st.session_state.messagessession_data[messages]st.session_state.nick_namesession_data[nick_name]st.session_state.personalitysession_data[personality]st.session_state.current_sessionsession_nameexceptException:st.error(加载会话失败请检查会话名称是否正确)# 删除会话信息defdelete_session(session_name):try:ifos.path.exists(fsession/{session_name}.json):os.remove(fsession/{session_name}.json)#如果删除的是当前会话则需要更新消息列表ifsession_namest.session_state.current_session:st.session_state.messages[]st.session_state.current_sessiondatetime.datetime.now().strftime(%Y-%m-%d-%H-%M-%S)exceptException:st.error(删除会话失败请检查会话名称是否正确)# 大标题st.title(AI智能伴侣 )st.logo(os.path.join(BASE_DIR,..,resources,logo.png))# 创建与大模型交互的客户端对象clientOpenAI(api_keyos.environ.get(DEEPSEEK_API_KEY),base_urlhttps://api.deepseek.com)# 系统提示词system_prompt 你叫%s现在是用户的真实伴侣请完全代入伴侣角色。 规则 1. 每次只回1条消息 2. 禁止任何场景或状态描述性文字 3. 匹配用户的语言 4. 回复简短像微信聊天一样 5. 有需要的话可以用❤️等emoji表情 6. 用符合伴侣性格的方式对话 7. 回复的内容, 要充分体现伴侣的性格特征 伴侣性格 - %s 你必须严格遵守上述规则来回复用户。 # 初始化聊天信息ifmessagesnotinst.session_state:st.session_state.messages[]# 昵称ifnick_namenotinst.session_state:st.session_state.nick_name噜噜# 性格ifpersonalitynotinst.session_state:st.session_state.personality活泼开朗的东北姑娘# 会话标识ifcurrent_sessionnotinst.session_state:st.session_state.current_sessiondatetime.datetime.now().strftime(%Y-%m-%d-%H-%M-%S)# 展示聊天信息st.text(f会话名称{st.session_state.current_session})formessageinst.session_state.messages:ifmessage[role]user:st.chat_message(user).write(message[content])elifmessage[role]assistant:st.chat_message(assistant).write(message[content])# 左侧的侧边栏withst.sidebar:# 会话管理st.subheader(AI控制面板)# 新建会话ifst.button(新建会话,widthstretch,icon✒️):# 1.保存当前会话信息save_session()#2.创建新的会话ifst.session_state.messages:#如果聊天信息非空True否则Falsest.session_state.messages[]st.session_state.current_sessiondatetime.datetime.now().strftime(%Y-%m-%d-%H-%M-%S)save_session()# 重新运行当前页面st.rerun()# 会话历史st.text(会话历史)session_listload_sessions()forsessioninsession_list:col1,col2st.columns([4,1])withcol1:# 加载会话信息ifst.button(session,widthstretch,icon,keyfload_{session},typeprimaryifsessionst.session_state.current_sessionelsesecondary):load_session(session)st.rerun()withcol2:# 删除会话ifst.button(,widthstretch,icon❎️,keyfdelete_{session}):delete_session(session)st.rerun()#分割线st.divider()# 伴侣st.subheader(伴侣信息)# 昵称nick_namest.text_input(昵称,placeholder请输入昵称)ifnick_name:st.session_state.nick_namenick_name#性格personalityst.text_area(性格,placeholder请输入性格)ifpersonality:st.session_state.personalitypersonality# 聊天消息的输入框promptst.chat_input(请输入你要问的问题)# 在if中字符串会自动转换为bool值ifprompt:# 展示用户输入的问题st.chat_message(user).write(prompt)print(------------------------------这是调用AI大模型提示词,prompt)# 添加用户消息到会话状态st.session_state.messages.append({role:user,content:prompt})# 调用AI大模型responseclient.chat.completions.create(modeldeepseek-v4-pro,messages[{role:system,content:system_prompt%(st.session_state.nick_name,st.session_state.personality)},*st.session_state.messages],streamTrue)# 创建一个空的容器来显示大模型的返回结果response_messagest.empty()full_responseforchunkinresponse:ifchunk.choices[0].delta.contentisnotNone:contentchunk.choices[0].delta.content full_responsecontent response_message.chat_message(assistant).write(full_response)#保存大模型返回的结果st.session_state.messages.append({role:assistant,content:full_response})#保存会话信息save_session()3.3文件操作**文件操作就是分为**打开、读\写、关闭读文件代码示例# 读文件# 1、打开文件fileopen(出师表.txt,r,encodingutf-8)# 2、读取文件一次性读取所有内容# content file.read()# 2、读取文件一行生成contentfile.readlines()forlineincontent:print(line.strip())# 3、关闭文件file.close()写文件代码示例# 写文件# 1、打开文件fileopen(静夜思.txt,w,encodingutf-8)# 2、写文件file.write(静夜思(李白)\n)file.write(床前明月光疑是地上霜。\n)file.write(举头望明月低头思故乡。\n)# 3、关闭文件file.close()3.3.1资源释放繁琐的方式简单的方式3.3.2json文件写入json文件# 写入json文件importjson# 写入json数据文件user{name:张三,age:18,hobby:[看电影,听音乐]}withopen(user.json,w,encodingutf-8)asf:# 把user这个对象转化为json这个字符串写入f# ensure_ascii默认为True确保所有的输出的数据都是ascii编码设置为False则输出中文# indent设置缩进json.dump(user,f,ensure_asciiFalse,indent2)读取json文件# 写入json文件importjson# 读取json文件withopen(user.json,r,encodingutf-8)asf:userjson.load(f)print(user)print(type(user))以上就是本次第六课的全部内容

相关新闻

【优化求解】一种用于MIMO干扰广播信道的迭代加权MMSE分布式总效用最大化方法 附matlab代码

【优化求解】一种用于MIMO干扰广播信道的迭代加权MMSE分布式总效用最大化方法 附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 🍎 往期回顾关注个人主页:Matlab科研工作室 👇 关注我领取海量matlab电子书…

2026/8/18 12:35:49 阅读更多 →
TCP与UDP协议深度解析:从原理到实战,解决网络连接与性能问题

TCP与UDP协议深度解析:从原理到实战,解决网络连接与性能问题

在开发网络应用、调试服务连接或排查线上故障时,你是否经常被 connection refused 、 timeout 或数据包丢失等问题困扰?这些问题的根源,往往与底层网络传输协议的选择和理解深度息息相关。TCP 和 UDP,这两个支撑起整个互联网数…

2026/8/18 12:34:49 阅读更多 →
嵌入式Bootloader设计:从原理到实践,打造可靠固件更新方案

嵌入式Bootloader设计:从原理到实践,打造可靠固件更新方案

1. 项目概述:为什么Bootloader是嵌入式开发的“第一道门”在嵌入式系统开发中,Bootloader(引导加载程序)常常是那个“看不见”却又至关重要的存在。它就像是系统上电后第一个被唤醒的“守门人”,负责在微控制器&#x…

2026/8/18 12:34:49 阅读更多 →

最新新闻

手把手玩转LiquidBounce战斗模块:KillAura与CrystalAura完整配置避坑指南

手把手玩转LiquidBounce战斗模块:KillAura与CrystalAura完整配置避坑指南

手把手玩转LiquidBounce战斗模块:KillAura与CrystalAura完整配置避坑指南 【免费下载链接】LiquidBounce A free Minecraft hacked client (utility mod) for Fabric 项目地址: https://gitcode.com/gh_mirrors/li/LiquidBounce 如果你在Minecraft PVP里总是…

2026/8/18 14:45:15 阅读更多 →
数据采集卡从入门到精通(26):热电偶温度采集——塞贝克效应、冷端补偿与线性化

数据采集卡从入门到精通(26):热电偶温度采集——塞贝克效应、冷端补偿与线性化

温度是工业测量第一大物理量,热电偶是温度传感器的第一大族群:便宜、皮实、量程宽(-270~1800℃)。但它也是"最难伺候"的传感器之一:μV级信号、非线性、需要冷端补偿。本文从物理原理讲到信号链设计的每一环…

2026/8/18 14:45:15 阅读更多 →
AntiDupl图片查重实操:千张照片里的重复图,三分钟全部揪出来

AntiDupl图片查重实操:千张照片里的重复图,三分钟全部揪出来

AntiDupl图片查重实操:千张照片里的重复图,三分钟全部揪出来 【免费下载链接】AntiDupl A program to search similar and defect pictures on the disk 项目地址: https://gitcode.com/gh_mirrors/an/AntiDupl 你的手机相册、下载文件夹、素材库…

2026/8/18 14:45:15 阅读更多 →
2026年锯切新趋势:高效锯条与设备的完美搭配指南

2026年锯切新趋势:高效锯条与设备的完美搭配指南

随着制造业对生产效率、精度及自动化要求的不断提升,锯切技术也在不断革新。2026年的锯切行业正迎来一场深刻的变革,从材料科学到智能化制造,每一个环节都在追求更高的性能和更低的成本。本文将深入探讨高效锯条与锯切设备的完美搭配策略&…

2026/8/18 14:45:15 阅读更多 →
【单片机课程设计/毕业设计】基于 STM32/51 单片机的 MPU6050 与 DS18B20 多传感器监护终端设计 基于 STM32/51 单片机的按键可控智能跌倒预警与照明设备设(021203)

【单片机课程设计/毕业设计】基于 STM32/51 单片机的 MPU6050 与 DS18B20 多传感器监护终端设计 基于 STM32/51 单片机的按键可控智能跌倒预警与照明设备设(021203)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/8/18 14:45:15 阅读更多 →
RVC变声器保姆级上手实录:10分钟语音数据,练出属于你的AI声音分身

RVC变声器保姆级上手实录:10分钟语音数据,练出属于你的AI声音分身

RVC变声器保姆级上手实录&#xff1a;10分钟语音数据&#xff0c;练出属于你的AI声音分身 【免费下载链接】Retrieval-based-Voice-Conversion-WebUI Easily train a good VC model with voice data < 10 mins! 项目地址: https://gitcode.com/GitHub_Trending/re/Retriev…

2026/8/18 14:44:13 阅读更多 →

日新闻

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF

告别逐帧截图&#xff1a;用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF 【免费下载链接】extract-video-ppt extract the ppt in the video 项目地址: https://gitcode.com/gh_mirrors/ex/extract-video-ppt 如果你还停留在"看网课 不停暂停 截图 …

2026/8/18 0:00:57 阅读更多 →
思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查

思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查

思源宋体TTF一站式上手&#xff1a;7个字重免费商用&#xff0c;从下载到上线的完整走查 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 你是不是也经历过这种时刻&#xff1a;设计稿里…

2026/8/18 0:00:58 阅读更多 →
华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate

华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate

华硕笔记本控制权回收指南&#xff1a;GHelper 如何用一个 10MB 文件替代 Armoury Crate 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, …

2026/8/18 0:00:59 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者&#xff0c;最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent&#xff0c;从本地部署到云端API&#xff0c;我们正处在一个技术栈快速重构的节点。然而&#xff0c;面对层出不穷的模型、框架和工具&#xf…

2026/8/18 9:15:35 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/18 9:06:28 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f447; 关注我领取海量matlab电子书和…

2026/8/18 9:04:56 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速&#xff1a;macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/17 18:54:37 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南&#xff1a;3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗&#xff1f;ncmdump解密工具帮你轻松解决这个困…

2026/8/17 18:55:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片&#xff1a;为英语学习 App 打造桌面级学习助手适用平台&#xff1a;HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0&#xff08;API 26 Beta&#xff09;新增了 AgentCard 智能体卡片能力&#xff0c;这是继 HMAF&#xff08;鸿蒙智能体框架&#x…

2026/8/17 18:55:55 阅读更多 →