如何解决没有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'
返回True
或False
。然后与count += statement[i: i + 4] == 'Emma'
等效的count = count + statement[i: i + 4] == 'Emma'
将执行布尔值和整数加法运算。正如我在上面告诉您的那样,这将导致布尔值被强制转换为整数并执行操作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。