我正在通过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