我試圖完成這個嘗試來計算字符串中有多少次"Z"
吃"E"
。換句話說,我需要計算"ZE"
多少次是給定的字符串:如何計算給定字符串中有多少個「ZE」
letters = "GOLDZEZEDUZZEOZBIX"
爲什麼這個代碼只返回1?
def is_eaten(data):
count = 0
if "Z" and "E" in data:
count += 1
return count
我試圖完成這個嘗試來計算字符串中有多少次"Z"
吃"E"
。換句話說,我需要計算"ZE"
多少次是給定的字符串:如何計算給定字符串中有多少個「ZE」
letters = "GOLDZEZEDUZZEOZBIX"
爲什麼這個代碼只返回1?
def is_eaten(data):
count = 0
if "Z" and "E" in data:
count += 1
return count
因爲你設置了數到一個if
Z和E是數據。每ZE不一次for
,但if
。
閱讀for
循環。
爲什麼這段代碼只返回1?
多種原因。
首先,有一個在代碼中沒有循環,所以沒有辦法它可以再回到大於1
其次,if "Z" and "E" in data
並不意味着你在想什麼。確實如果"Z"
爲真,並且"E" in data
爲真。換句話說,它相當於if ("Z") and ("E" in data)
。但是,即使括號是另一種方式,它是if ("Z" and "E") in data)
它不會工作。由於"Z" and "E"
只是"E"
(試試看),那只是檢查數據是否出現"E"
。
你需要if "Z" in data and "E" in data
來做你想做的事情。
第三,即使你解決這個問題,邏輯沒有任何意義。如果任何地方有任何「Z」,並且任何地方有任何「E」,這就是事實。所以,對於「EZ」來說,這顯然是錯誤的。你只希望它是真的,如果子數據庫"ZE"
出現在數據中,對不對?您可以使用if "ZE" in data
來表示這一點。或者,如果由於某種原因您不允許這樣做,請先找到"Z"
並檢查下一個字符是否爲"E"
。
這裏有一個方法可以做到這一點(不是很好方式,但最近我可以拿出來,你試了一下):
def count_eaten(data):
count = 0
while True:
index = data.find('Z')
if index == -1:
return count
data = data[index+1:]
if data[0] == 'E':
count += 1
或者更簡單地說:
def count_eaten(data):
count = 0
while True:
index = data.find('ZE')
if index == -1:
return count
data = data[index+1:]
count += 1
,或者甚至更簡單:
def count_eaten(data):
return data.count('ZE')
我猜你的教授不想要這最後一個,並且可能不希望前面的那個......但這只是一個猜測(因爲這是首要作業)。
即使另一種解決辦法試試這個:
def keyCount(dataset, key):
return dataset.count(key)
這種方法的
正確使用會再看看這樣的:
>>> letters = "GOLDZEZEDUZZEOZBIX"
>>> key = "ZE"
>>> keyCount(letters, key)
3
或
>>> keyCount(letters, "ZE")
3
或
>>> keyCount("GOLDZEZEDUZZEOZBIX", "ZE")
3
等。
這是http://stackoverflow.com/questions/1155617/count-occurrence-of-a-character-in-a-的副本python-string – nietonfir 2013-04-29 21:56:38
這個問題是計算單個字符,而不是子字符串。所選擇的答案很明顯地表明它與子串一樣好,這意味着它正是OP所需要的,所以我投票結束。但我想指出,以防其他人不同意。 – abarnert 2013-04-29 21:58:55
實際上,OP實際上並不是在問「我該如何做到這一點」,而是「爲什麼這段代碼只返回1」,所以......實際上它不是一個dup。 – abarnert 2013-04-29 22:06:21