我需要编写这个python代码来检查一个单词是否是isogram,并且被要求使用一个方法并在结束布尔值之前调用一个元组。这是我给出的测试代码,我已经与这段代码争斗了一天没有解决方案。
from unittest import TestCase
class IsogramTestCases(TestCase):
def test_checks_for_isograms(self):
word = 'abolishment'
self.assertEqual(
is_isogram(word),
(word, True),
msg="Isogram word, '{}' not detected correctly".format(word)
)
def test_returns_false_for_nonisograms(self):
word = 'alphabet'
self.assertEqual(
is_isogram(word),
(word, False),
msg="Non isogram word, '{}' falsely detected".format(word)
)
def test_it_only_accepts_strings(self):
with self.assertRaises(TypeError) as context:
is_isogram(2)
self.assertEqual(
'Argument should be a string',
context.exception.message,
'String inputs allowed only'
)
答案 0 :(得分:0)
您可以使用len(set(s)) == len(s)
测试等值线图。也就是说,如果唯一字符集的长度等于字符串的长度,则字符串是等值线。
我觉得这个功能看起来像这样:
def is_isogram(s):
if not isinstance(s, str):
raise TypeError('String inputs allowed only')
return len(set(s)) == len(s)