8.8 书生大模型实战营2 - python基础知识作业

1. 作业要求:

1.1 wordcount函数实现

请实现一个wordcount函数,统计英文字符串中每个单词出现的次数。返回一个字典,key为单词,value为对应单词出现的次数。

结果示例:

Input:

"""Hello world!  
This is an example.  
Word count is fun.  
Is it fun to count words?  
Yes, it is fun!"""

output:

{'hello': 1, 'world': 1, 'this': 1, 'is': 4, 'an': 1, 'example': 1, 'word': 1, 'count': 2,
'fun': 3, 'it': 2, 'to': 1, 'words': 1, 'yes': 1}
text = """
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.
"""

def wordcount(text):
    pass

1.2 debug过程

请使用本地vscode连接远程开发机,将上面你写的wordcount函数在开发机上进行debug,体验debug的全流程,并完成一份debug笔记(需要截图)。
 

2. 作业实现

2.1 debug方式复习

首先用vscode的SSH插件连接开发机,然后创建python_demo.py文件,可以用之前的Linux的touch命令创建文件,创建文件夹是: mkdir

debug方式一:单个python文件的debug

首先选择python解释器,随后根据需要对相应的位置设置断点。

在代码行号旁边点击,可以添加一个红点,这就是断点(如果不能添加红点需要检查一下python extension是否已经正确安装)。当代码运行到这里时,它会停下来,这样你就可以检查变量的值、执行步骤等。

点击VSCode侧边栏的“Run and Debug”(运行和调试),然后点击“Run and Debug”(开始调试)按钮,或者按F5键。

单击后会需要选择debugger和debug配置文件,我们单独debug一个python文件只要选择Python File就行。然后你的代码会在达到第一个断点之前运行,在第一个断点处停下来。

当代码在断点处停下来时,你可以查看和修改变量的值。在“Run and Debug”侧边栏的“Variables”(变量)部分,你可以看到当前作用域内的所有变量及其值。

debug面板各按钮功能介绍:

  • 1: continue: 继续运行到下一个断点

  • 2: step over:跳过,可以理解为运行当前行代码,不进入具体的函数或者方法。

  • 3: step into: 进入函数或者方法。如果当行代码存在函数或者方法时,进入代码该函数或者方法。如果当行代码没有函数或者方法,则等价于step over。

  • 4: step out:退出函数或者方法, 返回上一层。

  • 5: restart:重新启动debug

  • 6: stop:终止debug

debug的功能面板特别关键,这里需要详细了解每一个按钮的作用!!!

随后即可以逐步进行debug调试!

debug方式二:在vscode使用命令行进行debug

vscode支持通过remote的方法连接我们在命令行中发起的debug server。首先我们要配置一下debug的config。

还是点击VSCode侧边栏的“Run and Debug”(运行和调试),单击"create a lauch.json file"

选择debugger时选择python debuger。选择debug config时选择remote attach就行,随后会让我们选择debug server的地址,因为我们是在本地debug,所以全都保持默认直接回车就可以了,也就是我们的server地址为localhost:5678。

配置完以后会打开如下配置的json文件,但这不是重点,可以关掉。这时我们会看到run and debug界面有变化,出现了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。

如下所示,debug已经启动成功!即可正常开始debug

2.2 debug

编写的函数如下:

结果:

与文档提供的示例相同,函数编写基本正确。

这里注意以下二者的区别:

word_list = text.split()
word_list = text.split(" ")

text.split(" ")

  • 使用 " " 作为分隔符,只在遇到单个空格时拆分。

  • 如果有多个连续的空格(例如 " "),会将这些连续的空格视为分隔符的一部分,因此会在结果中包含空字符串。

text.split()

  • split() 不带参数时,默认会将任意数量的空白字符(包括空格、制表符、换行符等)作为分隔符。

  • split() 会自动忽略字符串开头、结尾和中间的多余空白字符,因此不会在结果中包含空字符串。

debug方式一:

一步步操作,没有问题,可以看到断点附近的代码的输出结果!完成!

debug方式二:

出现问题,debug没有在断点停止,直接输出了最终的结果:

这里目前未解决,不知道啥原因?

8.9日再次找问题:

换了一个版本的python插件之后仍然出现同样的问题

但是用方式一是可以正常进行调式的,问题出在哪呢?

最后在根目录中启动server服务,然后进行debug,成功!

原因找到,问题出在json的配置路径中,路径映射

 {

                    "localRoot": "${workspaceFolder}",

                    "remoteRoot": "."

                }

chatgpt的回答:

  • localRoot: "${workspaceFolder}"
    本地工作区的根目录,${workspaceFolder} 是 VSCode 中的一个变量,代表当前打开的工作区根目录。
  • remoteRoot: "."
    远程主机上的工作目录。"." 表示远程 Python 进程的当前目录。

上述也能成功进行debug,问题主要在于localRoot的指定,指定为${workspaceFolder},即要从工作区的根目录进行命令行的debug进行调试;否则要指定一个路径,即可正常进行调试debug!

问题解决!

开心开心!

  • 14
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值