python循环内返回

2024-09-27 02:27:08 发布

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

如果我定义:

def hasNoX_2(s):
    if type(s)!=str:
       return False
    for c in s:
        if c!='x' or c!='X':
           return True
    return False

然后输入hasNoX_2('Xenon')True返回,我不知道为什么。第一个If语句中没有返回任何内容,因为它只返回FalseIf{}不是字符串。当for循环说“嘿,我看不到'x'或{},所以我可以返回True时,它在看什么呢在


Tags: orinfalsetrueforreturnif定义
3条回答

我们只关注if语句

if c!='x' or c!='X':

这是一个包含两个项的布尔表达式

  • c != 'x'
  • c != 'X'

当您使用or运算符时,如果任一项的计算结果为True,则整个表达式的计算结果为True。如果表达式的计算结果为True,则执行if语句的主体(在本例中为return True)。在

这是or表达式(A或B)的标准真值表

^{pr2}$

如您所见,结果是False只有在这两个条件都为False时

让我们看看表达式如何计算每种类型的输入

c                   | c != 'x' | c != 'X' | or expression |
                             
'x'                 | False    | True     | True          |
'X'                 | True     | False    | True          |
any other character | True     | True     | True          |

简而言之,您的表达式将始终求值为True,并且始终采用if分支。在

因此,当函数检查提供的字符串中的第一个字符时,return True。在

此函数返回False的唯一方法是

  • 如果提供了str以外的内容
  • 如果提供空字符串-因为从未输入for循环。在

在for循环中迭代字符串中的每个字符。所以它要看每个角色。当那些if语句为真的时候,你的循环几乎都在寻找。在

但是,如果使用或如果其中一个为真,则整个条件的计算结果为true,因此请使用并确保这两个语句都为true

如果输入字符串中的所有字符都不等于“x”或“x”,我支持您尝试实现True。在

如果是这样,您只需使用以下代码:

def hasNoX_2(s):

    if isinstance(s, str):
        return 'x' not in s.lower()

    return False

print(hasNoX_2('Xenon'))
print(hasNoX_2('eenon'))

相关问题 更多 >

    热门问题