练习Python Bob

时间:2016-08-29 23:44:20

标签: python

我正在通过Exercism.IO学习Python,我目前正处于Bob问题,问题的对象如下:

  鲍勃是一个缺乏勇气的少年。在谈话中,他的回答非常有限。   鲍勃回答'当然。'如果你问他一个问题。   他回答'哇,冷静下来!'如果你对他大喊大叫   他说'好吧。那样!“如果你没有真正说出来对他说   任何东西。   他回答'随便。'其他任何事情。

到目前为止,我已经通过了一些测试,并且我已经停留在假设要返回whatever的位置,但是所有字符都是整数,所以当然它不起作用。

这是我失败的地方:

def test_only_numbers(self):
    self.assertEqual(
        'Whatever.', bob.hey('1, 2, 3')
    )

所有字符都是整数,我的测试看看它们是否大喊大叫:

def is_yelling(self):
    return self.sentence == self.sentence.upper()

显然,大写或小写的字符是相同的,因为它们是数字,因此程序认为它们正在大喊大叫。我的问题是如何重构这个程序,以便当断言是所有数字时,它不会被视为大喊大叫?

def hey(what):
    sentence = SentenceThinker(what)
    if sentence.is_silence():
        return "Fine. Be that way!"
    elif sentence.is_yelling():
        return "Whoa, chill out!"
    elif sentence.is_question():
        return "Sure."
    else:
        return "Whatever."


class SentenceThinker(object):

    def __init__(self, sentence):
        self.sentence = sentence

    def is_yelling(self):
        return self.sentence == self.sentence.upper()

    def is_question(self):
        return self.sentence.endswith("?")

    def is_silence(self):
        return not self.sentence

1 个答案:

答案 0 :(得分:3)

考虑使用内置的String方法str.isupper()