L0G2-Python 前置基础

news/2025/2/6 23:36:24/文章来源:https://www.cnblogs.com/zhengzirui/p/18701886

L0G2-Python 前置基础

1. 任务一 Leetcode 383

通过的截图

image-20250205125258326

通过的代码

class Solution(object):def canConstruct(self, ransomNote, magazine):""":type ransomNote: str:type magazine: str:rtype: bool"""# 只使用 defaultdict(int) 避免 if 语句(默认值是 0,不用手动检查 key)。ransomNotedict = defaultdict(int)for i in ransomNote:ransomNotedict[i] += 1magazinedict = defaultdict(int)for i in magazine:magazinedict[i] += 1for k, v in ransomNotedict.items():if k not in magazinedict or magazinedict[k] < v:return Falsereturn True

2. 任务二 Vscode连接InternStudio debug

2.1 用获取环境变量的方式导入api_key

from openai import OpenAI
import json
import os
def internlm_gen(prompt,client):'''LLM生成函数Param prompt: prompt stringParam client: OpenAI client '''response = client.chat.completions.create(model="internlm2.5-latest",messages=[{"role": "user", "content": prompt},],stream=False)return response.choices[0].message.contentapi_key = os.getenv("api_key")
client = OpenAI(base_url="https://internlm-chat.intern-ai.org.cn/puyu/api/v1/",api_key=api_key)content = """
书生浦语InternLM2.5是上海人工智能实验室于2024年7月推出的新一代大语言模型,提供1.8B、7B和20B三种参数版本,以适应不同需求。
该模型在复杂场景下的推理能力得到全面增强,支持1M超长上下文,能自主进行互联网搜索并整合信息。
"""
prompt = f"""
请帮我从以下``内的这段模型介绍文字中提取关于该模型的信息,要求包含模型名字、开发机构、提供参数版本、上下文长度四个内容,以json格式返回。
`{content}`
"""
res = internlm_gen(prompt,client)
res_json = json.loads(res)
print(res_json)

2.2 运行代码,查看控制台错误输出并启动debug

image-20250205130136518

可以发现是31行报错,json.loads()函数的作用是将JSON 格式的字符串解析为Python 中的字典、列表等数据类型,以便在代码中进行处理和操作。它报错,猜测可能的原因是res不能正确解析,我们通过vscode的debug功能查看一下res的值如下:

image-20250205130513022

'根据提供的模型介绍文字,以下是提取的关于该模型的信息,以JSON格式返回:\n\n```json\n{\n  "model_name": "书生浦语InternLM2.5",\n  "development_institution": "上海人工智能实验室",\n  "parameter_versions": ["1.8B", "7B", "20B"],\n  "context_length": "1M"\n}\n```\n\n这个JSON对象包含了模型名字、开发机构、提供参数版本以及上下文长度这四个要求的信息。'

可以发现这不是纯粹的json格式,所以json.loads()不能成功解析。

2.3 修复bug

把字符串当前前后多余字符去掉,前面必须以{开头,后面必须以}结尾。

增加clean_json_string函数,修改后的正确代码如下:

from openai import OpenAI
import json
import os
def clean_json_string(s):# 去掉前面 `{` 之前的字符s = s.lstrip(" \n\t\r")  # 先去掉空白字符,避免影响 `{` 查找if "{" in s:s = s[s.index("{"):]  # 截取从 `{` 开始的部分# 去掉后面 `}` 之后的字符s = s.rstrip(" \n\t\r")  # 先去掉空白字符,避免影响 `}` 查找if "}" in s:s = s[:s.rindex("}") + 1]  # 截取到 `}` 结束return sdef internlm_gen(prompt,client):'''LLM生成函数Param prompt: prompt stringParam client: OpenAI client '''response = client.chat.completions.create(model="internlm2.5-latest",messages=[{"role": "user", "content": prompt},],stream=False)return response.choices[0].message.contentapi_key = os.getenv("api_key")
client = OpenAI(base_url="https://internlm-chat.intern-ai.org.cn/puyu/api/v1/",api_key=api_key)content = """
书生浦语InternLM2.5是上海人工智能实验室于2024年7月推出的新一代大语言模型,提供1.8B、7B和20B三种参数版本,以适应不同需求。
该模型在复杂场景下的推理能力得到全面增强,支持1M超长上下文,能自主进行互联网搜索并整合信息。
"""
prompt = f"""
请帮我从以下``内的这段模型介绍文字中提取关于该模型的信息,要求包含模型名字、开发机构、提供参数版本、上下文长度四个内容,以json格式返回。
`{content}`
"""
res = internlm_gen(prompt,client)
res_json = json.loads(clean_json_string(res))
print(res_json)

去除了无关字符后得到的Json字符串如下:

image-20250205135111750

正确的输出结果如下:

image-20250205135136850

3. 知识积累

vscode的条件断点

在调试(Debug)过程中,断点(Breakpoint)允许程序员在程序的执行流程中设置暂停点。当程序运行到这些断点时,执行会暂时中断,使得我们可以检查此时程序的状态,包括变量的值、内存的内容等。断点为我们提供了一个观察程序运行细节的机会,从而帮助我们定位和解决程序中的错误或问题。在VSCode中,我们还可以设置条件断点,这样断点只有在满足特定条件时才会触发。

  1. 普通断点:在代码行号左侧点击,添加断点。
  2. 条件断点:在断点标记上右键,选择条件断点(conditional breakpoint)。VSCode 中常用的条件断点主要有三种类型:
    • 表达式(Expression):输入一个 Python 表达式,每次触发断点时运行该表达式,当表达式的值为 True 时 VS Code 会暂停执行。例如:x == 10
    • 触发计数(Hit Count):断点触发计数达到输入值时才会暂停运行。
      记录日志(Log Message):触发该断点时在 Debug Console 中输出指定信息,实际上就是
    • logpoint。需要输入要输出的信息,如果要用到表达式,可以使用 {} 将表达式括起来。例如,每次记录变量 i 的值可以写 x={i}。

条件断点中,表达式断点和触发计数断点是“或”的关系,即满足一个条件程序就会暂停。

当一个断点被设置为logpoint断点时,它不会暂停程序。如果这个断点同时还添加了表达式条件或者计数条件,则只在满足条件时才会输出日志信息到调试控制台。

带参数调试

1. 配置调试

  • 打开你的Python文件,点击左侧活动栏的“运行和调试”图标。
  • 首次debug需要配置以下,点击“创建launch.json file”,选择python debugger后选择“带有参数的Python文件” config。

image-20250205122515311

得到的launch.json如下:

{// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "Python 调试程序: 包含参数的当前文件","type": "debugpy","request": "launch","program": "${file}","console": "integratedTerminal","args": ["${command:pickArgs}"]}]
}

修改args属性的值为我们需要传入的参数:

{// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "Python 调试程序: 包含参数的当前文件","type": "debugpy","request": "launch","program": "${file}","console": "integratedTerminal","args": ["-a","-b","-c"]}]
}

2. 简单的demo

import sysprint(sys.argv)

3. 点击绿色箭头,以刚刚的配置启动调试

image-20250205122804331

在终端中可以看到我们配置的参数已经传入到python文件中了。同时,程序运行的结果也说明python文件可以获取到我们传入的参数。

image-20250205123036531

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/879879.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

L0G3-Git 基础知识

L0G3-Git 基础知识 1. 任务一 破冰活动之自我介绍 1.1 配置 git 直接采用全局设置的方式 git config --global user.name "sakuralggm" git config --global user.email "myemail@qq.com"查看全局配置 git config --global --list1.2 fork 项目1.3 克隆项目…

L0G4-玩转HF魔搭魔乐社区

L0G4-玩转HF/魔搭/魔乐社区 1. Hugging Face平台 1.1 任务一 模型下载 1.1.1 创建github codespace 访问github codespace,并使用Jupyter Notebook模板。创建完成后,进入“Create frome a template”页面对已经创建的codespace选择“open in visual studio code”点击后会经过…

2024 年度总结:与自己对话

搬运自洛谷博客,原发表时间:2024-12-27(实际写成:12-31)\[\mathsf{那跑过去的昼夜\ \ 是孤独的修炼\qquad——\ 林俊杰《黑夜问白天》} \] 孤独而不孤独.又来到写年度总结的时刻了。这一年无疑比去年更具故事的戏剧性与心境的跌宕起伏了。 被各种事件聚在一起搅和,高一上…

breach1靶机渗透学习

靶机下载 https://www.vulnhub.com/ 找Breach-1.0,不过这个是老靶机了,可以看网上其他博客附带有靶机下载的网盘链接,靶机官网访问很慢而且网站好像出问题了排版很乱,不打也罢。 readme.txt: First in a multi-part series, Breach 1.0 is meant to be beginner to interm…

lxl数据结构讲义例题泛做

搬运自洛谷博客,原发表时间:2022-12-06 网课人在家摆烂太悲伤了,于是做一些数据结构题。 本博客和ds学习笔记的区别:后者收录小清新/有趣题。 目前拥有的讲义:感觉数据结构题评紫的巨大多,良莠不齐。 可能会有非常简单的题加入这里,勿喷。 完成度指数:0%表示一半以上核…

电路板地与外壳地之间接一个电阻和一个电容的作用.

原理 原理图如下:我们知道外壳基本都是金属属性,外壳会预留一个螺丝孔,预留的螺丝孔是为了跟电路板地连接在一起,电路设计如原理图所示,这样做有什么作用呢?作用如下:外壳地如果不稳定或者有静电之类的,如果与电路板地直接连接,就会打坏电路板芯片,加入电容,就能把低…

晶体管

PCB设计中晶体管的学习与应用 在电子电路设计中,晶体管作为一种重要的有源器件,扮演着放大、开关、稳压等多种角色。本文将带您了解晶体管的基础知识,以及如何在PCB设计中正确选择和应用晶体管。 晶体管基础 晶体管主要有两种类型:双极型晶体管(BJT)和场效应晶体管(FET)…

Tailwin CSS 基础下篇

Tailwin CSS 进阶上篇 方便自己查看,仅做摘录,非原创。 原文链接 听说你还不会 Tailwind CSS(基础上篇)Tailwind CSS 的基础使用:从宽度高度开始逐步展现 Tai - 掘金 (juejin.cn) 听说你还不会 Tailwind CSS(基础中篇)Tailwind CSS 的基础使用:包含伪类、伪元素、flex …

ctfshow密码学wp

打hgame打傻了来洗洗脑子( 1、密码学签到2、 jsfuck扔控制台3、 aaencode颜文字4、 ctfrsatoolsfrom Crypto.Util.number import * from gmpy2 import * p=447685307 q=2037 e=17 phi=(p-1)*(q-1) d=inverse(e,phi) print(d) 5、 交intimport gmpy2,libnum f…

异动拉升之量子图形矩阵

一.量子图形矩阵通过异动拉升算法检测出异动拉升的股票之后,需要图形化显示股票分时曲线,帮助观察股票异动之后的走势,量子图形矩阵的功能就是将异动拉升的股票,按照冠绝榜中的排序,从上到下依次展示在图形矩阵中,可以选择4,9,16个窗口,在窗口没有锁住的情况下,新出现…

MySQL主从复制 —— 作用、原理、数据一致性,异步复制、半同步复制、组复制

MySQL主从复制 作用、原理—主库线程、I/O线程、SQL线程;主从同步要求,主从延迟原因及解决方案;数据一致性,异步复制、半同步复制、组复制文章目录 一、作用 二、原理 三、同步数据一致性3.1 主从同步要求3.2 主从延迟原因、直接表现3.3 减少主从延迟的方案3.4 数据一致性…

2024人工智能AI+制造业应用落地研究报告汇总PDF洞察(附原数据表)

原文链接: https://tecdat.cn/?p=39068 本报告合集洞察深入剖析当前技术应用的现状,关键技术 创新方向,以及行业应用的具体情况,通过制造业具体场景的典型 案例揭示人工智能如何助力制造业研发设计、生产制造、运营管理 和产品服务的全流程智能化升级。在此基础上对制造业…