news 2026/7/28 14:59:46

ex48——更复杂的用户输入/扫描输入

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ex48——更复杂的用户输入/扫描输入

lexicon程序

defconvert_number(s):"""处理异常和数字的函数"""try:returnint(s)exceptValueError:returnNoneclassLexicon():# 因主程序中调用的是lexicon.scan(),因此只能是由定义类的属性延伸到函数的属性""" 功能介绍: 1. 名称:lexicon 2. 实参:用户输入的字符串 3. 返回值return:语汇元组格式 4. 若单词不在单词语汇表中,返回原单词 5. TOKEN错误标记,标记用户错误的地方 """def__init__(self):# 初始化,并设置单词语汇表self.direction=['north','south','east','west','down','up','left','right','back']self.verb=['go','stop','kill','eat']self.stop=['the','in','of','from','at','it']self.noun=['door','bear','princess','cabinet']defscan(self,stuff):# 定义方法scansentence=[]words=stuff.split()forwordinwords:ifwordinself.direction:sentence.append(('direction',word))elifwordinself.verb:sentence.append(('verb',word))elifwordinself.stop:sentence.append(('stop',word))elifwordinself.noun:sentence.append(('noun',word))elifconvert_number(word):sentence.append(('numb',int(word)))else:sentence.append(('error',word))returnsentence# lexicon是否有更好的调用方法???lexicon=Lexicon()
fromnose.toolsimport*fromex48importlexicondeftest_direction():# lexicon.scan(str)意味着对函数lexicon添加了属性,需要借用类的概念。# 类的其中一个方法是scanassert_equal(lexicon.scan("north"),[('direction','north')])result=lexicon.scan("north south east")assert_equal(result,[('direction','north'),('direction','south'),('direction','east')],)deftest_verbs():assert_equal(lexicon.scan("go"),[('verb','go')])result=lexicon.scan("go kill eat")assert_equal(result,[('verb','go'),('verb','kill'),('verb','eat')])deftest_stops():assert_equal(lexicon.scan("the"),[('stop','the')])result=lexicon.scan("the in of")assert_equal(result,[('stop','the'),('stop','in'),('stop','of')])deftest_nouns():assert_equal(lexicon.scan("bear"),[('noun','bear')])result=lexicon.scan("bear princess")assert_equal(result,[('noun','bear'),('noun','princess')])deftest_numbers():# 输入的整数第一个单位不能为0assert_equal(lexicon.scan("1234"),[('numb',1234)])result=lexicon.scan("12 432")assert_equal(result,[('numb',12),('numb',432)])deftest_errors():# 若输入的单词不在语汇表中,则保持原样返回,并报错显示其位置assert_equal(lexicon.scan("asdf23"),[('error','asdf23')])result=lexicon.scan("bear IAS princess 806")assert_equal(result,[('noun','bear'),('error','IAS'),('noun','princess'),('numb',806)])
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/28 14:59:30

Kubernetes生产环境的十个配置陷阱:从资源限制到探针配置的避坑手册

Kubernetes生产环境的十个配置陷阱:从资源限制到探针配置的避坑手册如果说Kubernetes是一架精密的航空发动机,那么配置就是控制面板上密密麻麻的旋钮。拧错任何一个,轻则效率下降,重则空中停车。本文梳理十个高频K8s配置陷阱&…

作者头像 李华
网站建设 2026/7/28 14:57:23

【QA那些事儿】视频SDK测试方法-场景自动化

目录 一、自动化与白盒测试 二、白盒测试举例 三、场景自动化实践 1、核心思想 2、结果验证 3、整体框架 一、自动化与白盒测试 有过测试经验的同学,对“自动化”测试和“白盒”测试肯定不陌生,前者的目的是提高效率,后者的意义是增加深度。 进一步细分自动化测试,从事QA行…

作者头像 李华
网站建设 2026/7/28 14:57:05

vLLM与SGLang:大模型推理框架的技术对比与应用指南

1. 大模型推理框架的战场格局 2023年大模型推理领域最引人注目的现象,莫过于vLLM和SGLang这两个框架的崛起。作为长期跟踪大模型工程化的从业者,我亲眼见证了vLLM如何凭借PagedAttention技术横扫推理性能榜单,也目睹了SGLang如何通过声明式编…

作者头像 李华
网站建设 2026/7/28 14:56:24

OpenCV4Android从源码编译:定制化构建与Android集成实战

1. 项目缘起:为什么需要自己编译OpenCV4Android?如果你在Android项目里用过OpenCV,大概率是从官网直接下载那个现成的SDK包,解压,然后一股脑儿把libopencv_java4.so和opencv.jar扔进项目里。刚开始跑Demo,一…

作者头像 李华
网站建设 2026/7/28 14:55:25

PMP项目管理知识体系与实战应用解析

1. 项目管理知识体系核心框架解析 作为全球公认的项目管理黄金标准,PMP认证体系包含49个标准化的管理过程。这些过程并非孤立存在,而是通过严密的逻辑关系相互连接,形成完整的项目管理生命周期。我在备考和实际应用中发现,理解这些…

作者头像 李华
网站建设 2026/7/28 14:55:18

六祎-Java文件的上传和下载原理

文件上传的原理1.1Eazy实现文件上传下载1-2上传原理1.3entype表单属性​​​​​​​2.文件下载的原理——

作者头像 李华