[英]loop for specific characters in a string python
我遇到了一個家庭作業問題,我需要編寫一個函數,該函數接受一個參數,如果字符串中恰好有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的字符串中工作。 如果有人能指出我正確的方向,我將不勝感激。
您可以使用str.count:
str.count(sub [,start [,end]])
返回子字符串sub在[start,end]范圍內不重疊的次數。 可選參數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"))
您可以輕松使用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"))
"7" in a_string
為True當且僅當有任何 7
的在a_string
; 要檢查一定數量的7
s,可以將a_string
每個字符與7
進行比較,並計算它們匹配的次數。 您也可以使用正則表達式執行此操作。
您可以創建自己的櫃台,例如-
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.