书生 共学大模型实战营第四期任务 L0-G200

书生 ⋅ \cdot 共学大模型实战营第四期

本系列为InterLM 闯关作业个人完成情况分享
欢迎加入书生大模型实战训练营,赢取A100算力,丰富实战经验,完成实际项目,解锁更多可能!


Reference: https://github.com/InternLM/Tutorial/tree/camp4/docs/L0/Python
Affiliation: University of Science & Technology of China
Organization: Shanghai Artificial Intelligence Laboratory
Contact: zhangsy2023@mail.ustc.edu.cn


闯关任务1

任务描述:Leetcode 383(展示提交代码与leetcode提交通过截图)
leetcode常规题目,检查字符串a能否由字符串b中的元素构成,相比算法知识,该题目放在python基础一节的主要目的是考察python基本语法知识。两种直观的解法:
【解法1】

def canConstruct(a: str, b: str) -> bool:
       source, target = list(a), list(b)
       for item in target:
           if item in source:
               source.remove(item)
       return len(source) == 0

该解法需要了解list()可以将序列转化为列表,lst.remove(ele)在列表lst中删除第一个值为ele的元素(如没有这样的元素则报错)。类似的,python中列表的常用操作还有list.append(ele), list.pop(ele), list.insert(pos, ele), del(pos), index(ele), count(ele), list.reverse(), list.sort(), list.clear()等,可用于列表元素的增删改查。例如,可以使用append和pop操作模拟栈的入栈、出栈操作。

【解法2】

from collections import Counter
def canConstruct(a: str, b: str) -> bool:
	return Counter(a) <= Counter(b)

Counter是python中内置的一种计数类(广义),包含一组元素(Key)和与每个元素对应的一组计数(Value),其中Key具有唯一性。这里的技术可以抽象地理解为与元素具有对应关系的一个数值,当Counter实例由字符串构建时,Key为不同字符,Value即为每个字符在串中出现的次数;由字典构建时,Key为字典的键,Value为对应的键值。当a中每个Key的Value都不大于b中对应的Key时,Counter(a) <= Counter(b)成立。
在这里插入图片描述


闯关任务2

任务描述:VSCode连接InternStudio debug笔记
任务1解法1的本地调试版本代码为:

def canConstruct(ransomNote: str, magazine: str) -> bool:
    source, target = list(ransomNote), list(magazine)
    for item in target:
        if item in source:
            source.remove(item)
    return len(source) == 0

if __name__ =="__main__":
    ransomNote = "iloveyou"
    magazine = "youloveme"
    if canConstruct(ransomNote, magazine):
        print("True")
    else:
        print("False")

以任务1解法1代码为例,如果想要更进一步发现问题,可以在添加断点后,右键圆形红点,选择编辑断点:
在这里插入图片描述
之后可以选择满足表达式结果时中断、断点行触发达到一定次数时中断或断点命中时记录自定义信息(输出到调试控制台)。
我们以解法1的程序为例,选择输出日志信息,可以看到每次执行到source.remove(item)时两个字符串的当前内容:
在这里插入图片描述
在这里插入图片描述
至此可以清晰地看到在程序执行过程中,两个字符串内容的变化。


任务3 conda环境配置和使用

任务描述:使用VSCode连接开发机后使用pip install -t命令安装一个numpy到看开发机/root/myenvs目录下,并成功在一个新建的python文件中引用。
如果想要将环境myenv安装到自定义目录/root而不是conda默认安装路径,需要将传统命令conda create -n myenv python=xxx进行调整:

conda create --prefix /root/myenv python=3.9

文档中没有强调的是,如果要VSCode能够识别自定义解释器路径,则需要点击输入解释器路径:
在这里插入图片描述
然后自行输入,以/root/myenv路径下创建的环境为例,python解释器路径为/root/myenv/bin/python3.9
使用pip install numpy --target /root/myenv将numpy下载到自定义路径下,编写以下测试代码:

import sys

my_directory = '/root/myenv'

if my_directory not in sys.path:
    sys.path.append(my_directory)

import numpy as np

a = np.array([2024, 10, 24])
print(a)

这样系统就可以识别出numpy安装的路径,运行结果如下:
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值