第二关任务:
任务一:请实现一个wordcount函数,统计英文字符串中每个单词出现的次数。返回一个字典,key为单词,value为对应单词出现的次数。
任务二:请使用本地vscode连接远程开发机,将上面你写的wordcount函数在开发机上进行debug,体验debug的全流程,并完成一份debug笔记(需要截图)。
1、基础知识
这里需要了解Python和debug,可以查看文档学习。
2、使用vscode连接开发机进行python debug
VScode连接开发机可以去看上一篇书生大模型实战营(1)——InterStudio基础知识+Vscode SSH连接远程服务器+Linux基础指令
点击插件,可以看到本地和开发机上的插件,如果开发机没有安装python插件,点击安装:
单击vscode页面下方有一个X和!的位置可以快速打开vscode的控制台,然后进入TERMINAL。
TIPS
:右上方的+可以新建一个TERMINAL。
2.1debug单个python文件
首先新建文件夹,写一个简单的python程序来做debug演示。
启动debug:
当代码在断点处停下来时,你可以查看和修改变量的值。在“Run and Debug”侧边栏的“Variables”(变量)部分,你可以看到当前作用域内的所有变量及其值。
单步执行代码
从左到右一次是;
-
1
: continue: 继续运行到下一个断点 -
2
: step over:跳过,可以理解为运行当前行代码,不进入具体的函数或者方法。 -
3
: step into: 进入函数或者方法。如果当行代码存在函数或者方法时,进入代码该函数或者方法。如果当行代码没有函数或者方法,则等价于step over。 -
4
: step out:退出函数或者方法, 返回上一层。 -
5
: restart:重新启动debug -
6
: stop:终止debug
改动代码后运行:
2.2在vscode使用命令行进行debug
当py文件有很多参数和复杂文件关系时,直接使用命令行来发起debug会是一个更好的选择。
vscode支持通过remote的方法连我们在命令行中发起的debug server。首先我们要配置一下debug的config。
首先我们要配置一下debug的config。
还是点击VSCode侧边栏的“Run and Debug”(运行和调试),单击"create a lauch.json file"
选择debugger时选择python debuger。选择debug config时选择remote attach就行,随后会让我们选择debug server的地址,因为我们是在本地debug,所以全都保持默认直接回车就可以了,也就是我们的server地址为localhost:5678。
debug命令行
现在vscode已经准备就绪,让我们来看看如何在命令行中发起debug。如果没有安装debugpy的话可以先通过pip install debugpy安装一下。
python -m debugpy --listen 5678 --wait-for-client ./myscript.py
-
./myscript.py
可以替换为我们想要debug的python文件,后面可以和直接在命令行中启动python一样跟上输入的参数。记得要先在想要debug的python文件打好断点并保存。 -
--wait-for-client
参数会让我们的debug server在等客户端连入后才开始运行debug。在这就是要等到我们在run and debug界面启动debug。
先在终端中发起debug server,然后再去vscode debug页面单击一下绿色箭头开启debug。
2.3对word_count.py文件进行debug
- 创建文件
根据任务写函数word_count.py文件
import stringdef wordcount(text):punctuations = string.punctuationfor punct in punctuations:text = text.replace(punct, '')words = text.lower().split()count_dict = {}for word in words:if word in count_dict:count_dict[word] += 1else:count_dict[word] = 1return count_dicttext = """
Got this panda plush toy for my daughter's birthday,
who loves it and takes it everywhere. It's soft and
super cute, and its face has a friendly look. It's
a bit small for what I paid though. I think there
might be other options that are bigger for the
same price. It arrived a day earlier than expected,
so I got to play with it myself before I gave it
to her.
"""
print(wordcount(text))
重复上面步骤
程序结果: