编程世界中的新手学习使用Python编写代码下面的测试代码让我在尝试编写模块本身时遇到了问题,请高度赞赏如何编写代码的任何帮助。
from nose.tools import *
from glass import moviy
def test_directions():
assert_equal(lexicon.scan("north"), [('direction', 'north')])
result = lexicon.scan("north south east")
assert_equal(result, [('direction', 'north'),
('direction', 'south'),
('direction', 'east')])
def test_verbs():
assert_equal(lexicon.scan("go"), [('verb', 'go')])
result = lexicon.scan("go kill eat")
assert_equal(result, [('verb', 'go'),
('verb', 'kill'),
('verb', 'eat')])
def test_stops():
assert_equal(lexicon.scan("the"), [('stop', 'the')])
result = lexicon.scan("the in of")
assert_equal(result, [('stop', 'the'),
('stop', 'in'),
('stop', 'of')])
def test_nouns():
assert_equal(lexicon.scan("bear"), [('noun', 'bear')])
result = lexicon.scan("bear princess")
assert_equal(result, [('noun', 'bear'),
('noun', 'princess')])
def test_numbers():
assert_equal(lexicon.scan("1234"), [('number', 1234)])
result = lexicon.scan("3 91234")
assert_equal(result, [('number', 3),
('number', 91234)])
def test_errors():
assert_equal(lexicon.scan("ASDFADFASDF"), [('error', 'ASDFADFASDF')])
result = lexicon.scan("bear IAS princess")
assert_equal(result, [('noun', 'bear'),
('error', 'IAS'),
('noun', 'princess')])
答案 0 :(得分:0)
你有一个黑盒子,你必须通过输入发现里面的内容。
这是TDD
背后的基本理念像伊格纳西奥所说,你可以使用字典。它将通过测试。但它没有一个非常有用的实现,因为你不能拥有所有数字的密钥,例如。 它会做到这一点。但是不会在现实生活中发挥作用。
根据您的测试,您有一个词典对象。
class Lexicon(object):
def __init__(self):
pass
def scan(self, inputStr):
您注意到所有返回都是元组的向量。每个元组都是输入字符串中的单词。 所以你可以假设它被空间分裂了。
tokens = inputStr.split(" ")
创建一个矢量来保存答案:
answers = []
你可以从每个令牌开始猜测。
for token in tokens:
让我们首先尝试它是否是一个数字。
try:
answers.append(("number", int(token)))
except:
pass
最后你会回答答案
return answers
在此之后你可以运行数字测试:
lexicon = Lexicon()
test_numbers()
不会发生任何错误。
在此之后,您可以测试列表中的字符串。 首先在对象中创建列表。
class Lexicon(object):
directions = [ "north", "south", "east", "west"]
def __init__(self):
...
在扫描功能中,您可以测试令牌是否在路线列表中。
...
pass
if token in self.directions:
answers.append(("direction",token))
现在运行:
lexicon = Lexicon()
test_numbers()
test_directions()
不会发生任何错误! 这个想法与其他价值观相似。
顺便说一下。如果你没有像class,tuple,dict这样的概念。我很高兴你看看here