这是我的第一篇文章。
我有一段代码正在尝试进行鼻子测试。
有一个非常简单的修复程序可以使此代码运行,即将整数放在引号中。
我要完成的工作是拥有一个在字典中使用字符串和整数的字典。这是我的带有扫描功能的字典。
lexicon = {
'1234': 'number',
3: 'number',
91234: 'number'
}
def scan(sentence):
results = []
words = sentence.split()
for word in words:
word_type = lexicon.get(word)
results.append((word_type, word))
return results
以上代码已导入到我的测试文件中,其中包含此代码块。
from nose.tools import *
from ex48 import lexicon
def test_numbers():
assert_equal(lexicon.scan('1234'), [('number', '1234')])
result = lexicon.scan('3 91234')
assert_equal(result, [('number', 3),
('number', 91234)])
“ 1234”部分运行正常。
但是,代码中是否可以使用int(),以便在(3 91234)上运行split()时,它将返回两个整数并正确使用我的词典词典来调用适当的值?
谢谢您的帮助!
答案 0 :(得分:0)
您可以使用isnumeric()方法检查字符串是否为数字,然后再转换为int。
lexicon = {
'1234': 'number',
3: 'number',
91234: 'number'
}
def scan(sentence):
results = []
words = sentence.split()
for word in words:
if word.isnumeric(): #change
word = int(word) #change
word_type = lexicon.get(word)
results.append((word_type, word))
return results
请注意,进行此更改后,您需要将所有数字键存储为整型,否则将不会获取存储为字符串的数字键。