def checkio(words):
word = words.isalpha()
num = words.isdigit()
if word:
pass
if num:
pass
return True or False
print checkio(u"Hello World hello") == True, "Hello"
print checkio(u"He is 123 man") == False, "123 man"
print checkio(u"1 2 3 4") == False, "Digits"
print checkio(u"bla bla bla bla") == True, "Bla Bla"
print checkio(u"Hi") == False, "Hi"
工作正常。但是 -
谢谢!
注意 - 这就是拼图页面所说的内容 -
"前提条件:输入包含单词和/或数字。没有混合的单词(字母和数字组合)。 0< |字| < 100(这是一项简单的任务)。"我不遵循这一行。
答案 0 :(得分:2)
要解决目前为止的一个功能:
def checkio(words):
word = words.isalpha() # word = either True or False
num = words.isdigit() # num = either True or False
if word: # these four
pass # lines don't
if num: # actually
pass # do anything
return True or False # always evaluates to return True
您实际上使用在函数开头创建的变量word
和num
(除了明确或隐式地确定是否pass
) ,这应该让你知道你的功能可能没有做太多!
一些片段可以帮助您:
words = words.split() # get list of individual words
len(words) # how many words
for word in words: # iterate through the words
您可以记录您连续看到的字母字数,以及return True
,如果它变为三个字。
答案 1 :(得分:0)
.split()
正如您已经意识到的那样,.split()
将字符串转换为字符串列表。默认情况下,它会将字符串分隔为以空格分隔的部分。
>>> "Hello World hello".split()
['Hello', 'World', 'hello']
显然,.isalpha()
和.isdigit()
是字符串的方法,而不是列表。因此,您必须遍历列表中的字符串,并检查每个字符串是否为单词或数字。
>>> for word in "Hello World hello".split():
if word.isalpha(): print "word!"
elif word.isdigit(): print "digit!"
word!
word!
word!
现在您知道如何检查每个单词,由您决定如何确定该字符串是否连续包含三个单词。
AssertionError
s 现在,您AssertionError
的原因就是return True or False
返回的原因。看:
>>> True or False
True
这意味着您总是返回True
。不幸的是,这是simple boolean arithmetic所以你需要阅读它。我想你试图说“这个函数要么返回True
,要么返回False
”,但这根本不是你所表达的。无论如何,如果您将此print
语句替换为assert
:
print checkio(u"He is 123 man") == False
# goes to
assert checkio(u"He is 123 man") == False
您说assert True == False
,因此错误。如果您可以连续找到三个单词,请尝试返回True
,否则False
。