簡體   English   中英

循環查找字符串python中的特定字符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM