python3.4作业,我只想要一个hin

2024-04-25 11:56:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我必须编写一个程序,使用前缀和单词列表返回一个列表,其中包含列表中每个单词的TrueFalse,具体取决于单词是否以前缀开头。 例如starts_with('bob', ['bobastic', 'bobo', 'fandango'] 应该返回[True, True, False]。你知道吗

这就是我所拥有的。你知道吗

def starts_with(prefix, wordlist):
    lop= len(prefix)
    if lop==0:
        return True
    elif prefix[0] != [[x[0]] for x in wordlist]:
        return False
    else:
        wordrest = [x[1:] for x in wordlist]
        prefix_list = [starts_with(prefix[1:], wordrest)]
        return prefix_list
print(starts_with('bob', ['bobo', 'bobastic']))

这个函数的作用很有趣,它检查“bob”和“bobastic”是否以“b”开头,比如“bob”,但不是返回递归的case,而是返回False。你知道吗

我不想要一个解决方案,如果有人能告诉我发生了什么,我会很感激的。你知道吗


Tags: infalsetrue列表forprefixreturnwith
3条回答

刚收到一封邮件,说这个问题放错了,教授只是想让我们返回一个带有前缀的单词列表。你知道吗

这个问题的正确答案(我想)是
def starts_with(prefix, wordlist)
return [x for x in wordlist if x[:len(prefix)]==prefix]
非常感谢你们的帮助。我希望我没有对任何人不敬(这是有史以来的第一个问题!)。如果是的话,我很谦虚地道歉。祝你今天愉快!你知道吗

你的问题就在这里

elif prefix[0] != [[x[0]] for x in wordlist]:
    return False

在您的示例中,将评估为:

'b' != [['b'],['b']]

女巫永远是真的

正如@DorElias提到的,elif条件是错误的,因为它试图将一个字符与一个列表进行比较-它总是会失败!你知道吗

您可以使用内置函数^{}修复它:

def starts_with(prefix, wordlist):
    if not len(prefix):
        return True
    elif all([prefix[0] == x[0] for x in wordlist]):
        wordrest = [x[1:] for x in wordlist]
        return starts_with(prefix[1:], wordrest)
    else:
        return False

print(starts_with('bob', ['bobo', 'bobastic']))

相关问题 更多 >