**projects/setup.py**try:from setuptools import setup
except ImportError:from distutils.core import setup
config ={'description':'My project','author':'My name','url':'URL to get it at.','download_url':'Where to download it.','author_email':'My email.','version':'0.1','install_requires':['nose'],'packages':['NAME'],'scripts':[],'name':'projectnames'}
setup(**config)
_init_.py均为空
**ex48/lexicon.py**defconvert_number(s):"""处理异常和数字的函数"""try:returnint(s)except ValueError:returnNone"""
功能介绍:
1. 名称:lexicon
2. 实参:用户输入的字符串
3. 返回值return:语汇元组格式
4. 若单词不在单词语汇表中,返回原单词
5. TOKEN错误标记,标记用户错误的地方
"""# 初始化,并设置单词语汇表,全局变量
direction =['north','south','east','west','down','up','left','right','back']
verb =['go','stop','kill','eat']
stop =['the','in','of','from','at','it']
noun =['door','bear','princess','cabinet']defscan(stuff):# 定义方法scan
sentence =[]
words = stuff.split()for word in words:if word in direction:
sentence.append(('direction', word))elif word in verb:
sentence.append(('verb', word))elif word in stop:
sentence.append(('stop', word))elif word in noun:
sentence.append(('noun', word))elif convert_number(word):
sentence.append(('numb',int(word)))else:
sentence.append(('error', word))return sentence
**tests/lexicon_tests.py**from nose.tools import*from ex48 import lexicon #将NAME文件改为ex48,从ex48文件中导入lexicon模块deftest_direction():
assert_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():
assert_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)])