如何编写一个程序来检查作为参数提供的单词是否是Isogram

时间:2017-04-12 21:27:24

标签: python methods boolean tuples

我需要编写这个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'
      )

1 个答案:

答案 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)