python在for循环中调用函数,函数包含if else structu

2024-04-27 21:22:42 发布

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

下面的python代码调用了一个在dict上迭代的函数。 下面的代码不能按预期工作:

list1=["test1","test2","test3","test4"]
list2=["toto1","test1","test3","toto4"]

def functest(t):
    for l in list2:
        if t == l:
            return cond1
        else:
            return "rien"

for t in list1:
    titi=functest(t)
    print titi

当我打印titi var时,我必须打印4次。

如果我删除函数中的else,代码似乎可以工作。

你怎么解释这种行为?

为什么当我用返回的字符串添加else时,只打印字符串。

谢谢


Tags: 函数字符串代码inforreturntitielse
1条回答
网友
1楼 · 发布于 2024-04-27 21:22:42

因为return退出函数并将程序返回循环。因此,当您在循环中添加else语句时,将list1的当前元素与'toto1'进行比较,输入else语句,函数返回"rien"

def functest(t):
    for l in list2:
        if t == l: 
            return cond1
        else:
            return "rien" # we always end up here on the first iteration, 
                          # when comparing against "toto1"

删除else语句时,循环直到在list2中找到匹配项。但是,假设在list2中的元素与正在检查的list1中的元素都不匹配的情况下,仍然希望返回"rien",则应将return语句移出循环,以便仅在检查完所有元素后才返回。

def functest(t):
    for l in list2:
        if t == l:
            return "match found"
    return "rien"

演示

>>> for t in list1:
       titi=functest(t)
       print (titi)

match found
rien
match found
rien

相关问题 更多 >