首页 > 解决方案 > 函数在循环内返回?

问题描述

函数的 return 语句如何在 for 循环中工作?请参阅下面的代码,了解是什么让我想到了这一点。

这就像一个拼字游戏。你得到 n 个字母(我们称之为手),目的是从你的手中说出一个词。手是字典的形式,像这样:

yellow = {'y':1, 'e':1, 'l':2, 'o':1, 'w':1}

我编写了一个函数get_frequency_dict,用于将字符串转换为这种形式。

我想写一个函数来告诉我给定的单词是否有效。我在变量中有一个可接受的单词列表word_list

调用函数:is_valid_word(word, hand, word_list)它接受三个输入。

word: string
hand: dictionary (string: int)
word_list: list of lowercase strings

所以,我想编写这个函数,如果单词有效则返回 True,如果单词无效则返回 False:

def is_valid_word(word, hand, word_list):


    word_dict = get_frequency_dict(word.lower())


    if word.lower() in word_list:

        for char in word_dict:
            if (char in hand) and (hand[char] >= word_dict[char]):
                return True
            else:
                return False

    else:
        return False

这个函数似乎适用于各种不同的输入,但我不太确定我是否理解 for 循环中函数返回背后的逻辑?

当我们遍历字典中的键(字母)时,我们将根据条件是否满足得到 True 或 False。那么,函数如何知道要返回什么?如果一个字符返回 False,然后下一个字符返回 True,该怎么办?一旦在 for 循环中看到一个 False,它会立即返回 False 吗?

下面的代码对我来说更有意义:

total_false = 0

    for char in word_dict:
        if (char in hand) and (hand[char] >= word_dict[char]):
            pass
        else:
            total_false += 1

    if word.lower() not in word_list:
        return False
    elif total_false > 0:
        return False
    else:
        return True

第一段代码在幕后做这个“计数”吗?如,一旦我们看到一个 False,它就会返回 False?

标签: python-3.xfunctionreturn

解决方案


只需遍历列表,如果发现错误,请停止:

def is_valid_word(word, hand, word_list):


    word_dict = get_frequency_dict(word.lower())


    if word.lower() in word_list:

        for char in word_dict:
            if (char in hand) and (hand[char] >= word_dict[char]):
                continue
            else:
                return False #This will stop the function and return false

    else:
        return False #This will do the same


    #At the end, this means that all of the criteria are met, so we return True
    return True

正如我们所看到的,当一个字符不符合条件时,函数停止并返回false。如果它通过了所有条件,则返回true.


推荐阅读