2013-04-29 137 views
0

我已經完成了對我的問題的解決方案的廣泛搜索,但是我已經寫得很短,主要是因爲沒有使用我需要的條件的循環示例。計算字符串/列表中的字符串值(FOR循環)

問題

for循環使用來算多少次的字母「A」出現在字符串「芬達」。 使用稱爲count()的Python字符串方法檢查您的答案。

注意:我知道這個問題問一個字符串出現多少次,但我決定使用列表。

我當時的回答嘗試

drink = ["f","a","n","t","a"] 
letter = "a" 

for letter in drink: 
    print (letter) 

顯然,有兩個A的芬達,但是我使用的內置計數功能驗證

count = drink.count('a') 
print(count) 

確實有兩個A的芬達:D

通過以下的思路; for循環將會尋找字母「a」內的飲料名單,打印出

a 
a 

或類似的東西,但我只是得到;

f 
a 
n 
t 
a 

我猜測是因爲for循環無法理解我只希望它檢查列表中的字符串字母。

我想知道

如何得到期望的結果在某種程度上是形狀或形式的for循環顯示的表示有多少一個在芬達。

謝謝你的時間。

+1

我想你還沒有理解for循環。 – Babu 2013-04-29 05:26:42

+0

不,for循環對我來說是新的 – BenniMcBeno 2013-04-29 05:28:02

+0

'for x in l:'在循環中覆蓋'x'的任何以前的值。這與外面的'x'不再有關係,或者在你的情況下,'信'。 – 2013-04-29 05:28:37

回答

3
>>> drink = ["f","a","n","t","a"] 
>>> count = 0 
>>> for c in drink: 
     if c == 'a': 
      count += 1 


>>> count 
2 
0

你可以在一行列表中理解。

len([letter for letter in drink if letter == 'a']) 

的原因,您的for循環不工作,你期望的方式是,在for letter in drinkletter變量不等於「A」。 for循環接受項變量和序列變量的參數。 letter是該項目,並且drink是序列。因此,drink中的每個項目都會根據您指定的變量letter給出,每次從第一個索引開始。

+1

列出有'.Count中()'方法一樣,所以沒有必要將其轉換爲一個字符串。 – Blender 2013-04-29 05:29:50

+0

+如果您閱讀問題 – jamylak 2013-04-29 05:30:27

+0

,您不允許使用'.count'沒有意識到@Blender。謝謝 – bozdoz 2013-04-29 05:30:27

3
drink = ["f","a","n","t","a"] 
letter = "a" 

for each_char in drink: 
    if each_char == letter: 
     print char, 
0

解決此問題的正確方法是以最簡單最直接的方式進行。

>>> s = 'fanta' 
>>> s.count('a') 
2 

Hoever,如果你堅持在列表上,正確的方法來計算列表中的項目與counter模塊。

>>> from collections import Counter 
>>> Counter('fanta') 
Counter({'a': 2, 'n': 1, 't': 1, 'f': 1}) 
>>> Counter('fanta')['a'] 
2 

注:一個字符串被自動視爲由Python中字符的列表,所以沒有必要提前創建一個特殊列表。