我陷入了一个家庭作业问题,我需要编写一个函数,该函数接受一个参数,并且如果字符串中恰好有3个7,则返回True。如果少于三个或大于三个'7',则该函数应返回False。
def lucky_seven(a_string):
if "7" in a_string:
return True
else:
return False
print(lucky_seven("happy777bday"))
print(lucky_seven("happy77bday"))
print(lucky_seven("h7app7ybd7ay"))
结果应为True,False,True。我要在只有一个7的字符串中工作。欣赏是否有人可以指出我正确的方向。
答案 0 :(得分:3)
您可以使用str.count:
str.count(sub [,start [,end]])
返回子字符串sub中不重叠出现的次数 范围[开始,结束]。可选参数start和end为 解释为切片符号。
def lucky_seven(a_string):
if a_string.count("7") == 3:
return True
else:
return False
print(lucky_seven("happy777bday"))
print(lucky_seven("happy77bday"))
print(lucky_seven("h7app7ybd7ay"))
答案 1 :(得分:1)
您可以轻松使用regexp来做到这一点:-
import re
def lucky_seven(text):
return len(re.findall("7", text)) is 3
print(lucky_seven("happy777bday"))
print(lucky_seven("happy77bday"))
print(lucky_seven("h7app7ybd7ay"))
答案 2 :(得分:0)
id1 id2 col1 col2 col3
-------------------------------------------------------
9 1 foo 1 2018 bar 1
9 2 foo 2 2018 <null>
9 3 foo 3 2018 bar 2
中有任何 "7" in a_string
,则 7
为True;要检查一定数量的a_string
,可以将7
与a_string
的每个字符进行比较,并计算它们匹配的次数。您也可以使用正则表达式来做到这一点。
答案 3 :(得分:0)
您可以创建自己的计数器,例如-
def lucky_seven(a_string):
count = 0
for s in a_string:
if s == "7":
count += 1
return True if count == 3 else False
或者您可以使用python的collections
模块,该模块将返回一个元素在列表中出现多少次的决定。由于字符串只不过是列表,因此它将起作用-
import collections
def lucky_seven(a_string):
return True if collections.Counter("happy777bday")["7"] == 3 else False
或字符串计数器-
def lucky_seven(a_string):
return True if str.count(a_string, "7") == 3 else False
甚至甚至不需要列表理解解决方案-
def lucky_seven(a_string):
return True if len([i for i in a_string if i == "7"]) == 3 else False