[书生实战营] 入门岛2: Python基础

一、闯关任务:Python实现wordcount

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

输入示例:

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

输出示例:

{'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}

1.基础测试

按照官方的提示,需要实现分几步实现:单词小写转换,去除标点符号,分割字符,创建字典。具体的代码实现如下所示:

def wordcount(text: str):
    # 1.将 text 全部转化为小写
    text = text.lower()
    # 2.将 text 中的标点符号使用空格(‘ ’)代替
    for char in ",.!?+-*":
        text = text.replace(char, ' ')
    # 3.将处理后的 text 拆分成单词列表
    words = text.split()
    # 4.创建字典以统计词频率
    word_dict = {}
    for word in words:
        if word in word_dict:
            word_dict[word] += 1
        else:
            word_dict[word] = 1
    return word_dict

定义主函数,并测试官方案例:

if __name__ == '__main__':
    text = """
    Hello world!
    This is an example.  
    Word count is fun.  
    Is it fun to count words?  
    Yes, it is fun!
    """
    word_dict =  wordcount(text)
    print(word_dict)

得到结果如下:

在这里插入图片描述

{'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}

2.进阶处理

在处理第二个案例时候会遇到缩写It's所有格daughter's的情况,需要对字符进行特殊的处理

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.
"""

仅针对这个案例,对于缩写使用替换的方式,进行补全。而对于所有格形式,则直接删除's'部分,修改的代码如下:

def wordcount(text: str):
    # 1.将 text 全部转化为小写
    text = text.lower()
    # 2.将 text 中的标点符号使用空格(‘ ’)代替
    for char in ",.!?+-*":
        text = text.replace(char, ' ')
    # 3.创建缩写对应的字典,并将缩写替换为扩展后的语句
    contractions = {
        "it's": "it is"
    }
    for contraction in contractions:
        text = text.replace(contraction, contractions[contraction])
    # 4.处理所有格形式,直接进行替换删除's部分
    text = text.replace("'s", '')
    # 5.将处理后的 text 拆分成单词列表
    words = text.split()
    # 6.创建字典以统计词频率
    word_dict = {}
    for word in words:
        if word in word_dict:
            word_dict[word] += 1
        else:
            word_dict[word] = 1
    return word_dict

在主函数中,将text修改为新的测试案例

if __name__ == '__main__':
    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.
    """
    word_dict =  wordcount(text)
    print(word_dict)

运行程序得到的结果如下:

在这里插入图片描述

{'got': 2, 'this': 1, 'panda': 1, 'plush': 1, 'toy': 1, 'for': 3, 'my': 1, 'daughter': 1, 'birthday': 1, 'who': 1, 'loves': 1, 'it': 7, 'and': 3, 'takes': 1, 'everywhere': 1, 'is': 2, 'soft': 1, 'super': 1, 'cute': 1, 'its': 1, 'face': 1, 'has': 1, 'a': 3, 'friendly': 1, 'look': 1, 'bit': 1, 'small': 1, 'what': 1, 'i': 4, 'paid': 1, 'though': 1, 'think': 1, 'there': 1, 'might': 1, 'be': 1, 'other': 1, 'options': 1, 'that': 1, 'are': 1, 'bigger': 1, 'the': 1, 'same': 1, 'price': 1, 'arrived': 1, 'day': 1, 'earlier': 1, 'than': 1, 'expected': 1, 'so': 1, 'to': 2, 'play': 1, 'with': 1, 'myself': 1, 'before': 1, 'gave': 1, 'her': 1}

可以看到daughter'sit's均进行了相应的处理

二、闯关任务:Vscode连接InternStudio debug

1.断点设置

在进行测试中,需要在程序中打断点,监测程序运行过程中的输出。在vscode中可以在行号前打断点,会有红色圆点标识

在这里插入图片描述

2. 使用debug模式运行

在程序运行时,可以使用vscode自带的debug工具,对应简单的项目可以直接选择 Python 调试程序: 调试 Python 文件

在这里插入图片描述

3. 查看变量值

点击调试后,程序会在该断点处暂停,此时可以查看变量的值

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值