没有if子句的条件?

问题描述

def count_emma(statement):
    print("Given String: ",statement)
    count = 0
    for i in range(len(statement) - 1):
        count += statement[i: i + 4] == 'emma'
    return count

count = count_emma("emma is good developer. emma is a writer")
print("emma appeared ",count,"times")

在此程序中,我必须找出“ emma”在以下语句中出现的次数:“ emma是优秀的开发人员。emma是一名作家”。

我的问题:我不明白第5行发生了什么。如果没有if子句,它是有条件的吗?每次语句中出现“ emma”时,计数如何增加1?

解决方法

首先,没有没有的要求,条件句只能与if一起使用。即使撇开了while可以使用的可能性,您也可以将条件绑定到变量或以其他方式使用它:

>>> x = (1 < 2) ; print(x)
True
>>> print(10 < 4)
False

在需要整数的情况下,根据以下记录,条件为1为真,0为假:

>>> count = 0
>>> count += (7 > 2) ; print(count)
1
>>> count += (7 > 20) ; print(count)
1

因此,对于字符串中的每个起始位置,如果在其中找到Emma,我们将添加一个,否则将添加零。

不幸的是,这也将提及她的兄弟伊曼纽尔(Emmanuel),因此您可能需要考虑到这一点。 一种方法是确保前后都有空格,并用空格替换所有非字母字符,然后使用string.count()来计算多少时间{ {1}}的两边都带有空格:

Emma

可能还有许多 other 方式,我只是更习惯于正则表达式。

,

在python中有一个自动转换。因此,当您添加整数和浮点数时,该整数将转换为浮点数,然后执行该操作。

例如,print(2 + 2)仅显示4,而print(2+2.0)将显示4.0,这是因为整数2被强制转换为浮点数。

当您添加一个整数和一个布尔值并将布尔值转换为整数时,会发生同样的事情。

例如,print(True + 2)显示3

但这不仅适用于加法运算,还可以进行比较。

例如,同时进行print(2==2.0)print(True == 1)时应打印True,因为2首先转换为浮点数,并且True也转换为整数

因此,在您的程序中也会发生同样的事情。 根据值,第一个statement[i: i + 4] == 'Emma'返回TrueFalse。然后与count += statement[i: i + 4] == 'Emma'等效的count = count + statement[i: i + 4] == 'Emma'将执行布尔值和整数加法运算。正如我在上面告诉您的那样,这将导致布尔值被强制转换为整数并执行操作。