2016-01-23 53 views
-2

我已經被標記爲發佈重複問題。但是,我的問題並不相同,因爲其他編碼人員正在詢問如何「計算字符串中特定字符的出現次數」。我的輸出不計算特定字符的出現次數,而是計算字符串中特定字符(全部元音)的總數。例如其他人一直在尋找的輸出是:Python中的計數元音2.7

A:1 E:6 I:2 

我也一直在尋找一個總的數字,所以我的輸出應爲:9(當然,我們正在談論的兩個代碼相同的字符串)「。

我創建了一段代碼,但由於某種原因,它是計算所有的字母,不只是元音字母。我想不出哪一部分我去錯在。

vowels = 'a', 'e', 'i', 'o', 'u' 

ip_str = raw_input("Enter a string: ") 
ans = str(raw_input) 

count = (0) 

for letters in ans: 
    if letters in vowels: 
     count += 1 

print str(count) 
+2

您將需要將您的代碼包含爲文本而不是鏈接到圖像。 – shuttle87

+3

而不是張貼截圖,你應該發佈實際文字 – Sayse

+0

以及你永遠不會使用'ip_str' – M4rtini

回答

0

這裏我們有一些錯誤。首先,請允許我糾正它,然後我將解釋:

vowels = ('a', 'e', 'i', 'o', 'u') 

ans = raw_input("Enter a string: ") 

count = 0 
for letters in ans: 
    if letters in vowels: 
     count += 1 

print str(count) 

raw_input是一個函數,而不是一個變量。我覺得你的意思str(ip_str),但沒有必要這樣做,因爲raw_input總是會返回一個字符串:

然後,該函數讀取輸入線,將其轉換爲字符串(剝離一個換行符),和返回。

所以,我們可以直接設置ans = raw_input("Enter a string: ")

現在,對於一些風格問題:vowels是一個元組,並且將()放在它的周圍使其更加清晰。它將以任何方式工作。 count只是一個簡單的int,並且不需要任何()的定義。

總而言之,唯一的錯誤是你如何定義ans

+0

我非常感謝您的意見,併爲您抽出時間幫助我!這非常有用,並幫助我理解我在哪裏搞砸了。現在代碼完美工作,我很感激!我一直盯着它,但有「作家阻止」,並不明白我出錯的地方。我對此很新,但我正在努力學習和理解它。太感謝了!我會投你的答案,但不幸的是,我還沒有任何聲望。這是我在這個網站上發佈的第一個問題。再次感謝! – Mackenzie

+0

我錯過了您的評論,但謝謝!樂意效勞 :) – Will

3

您存儲輸入在ip_str變量,但你永遠不會採取行動再次使用該變量。您想在迭代時使用該變量。請注意,在你的代碼時,你有:

>>> str(raw_input) 
'<built-in function raw_input>' 

這實際上得到的內置函數並存儲在ans,而不是你輸入的名稱。因此,每次運行時,您都會得到'<built-in function raw_input>'中的元音數量,而不是您的輸入,這總是9.

+0

謝謝!我很感謝你的回答。具有諷刺意味的是,我用我的名字「Mackenzie」測試了這個代碼,這個代碼也有9個字母,所以我認爲它是在統計所有字母。我會評價你的答案,但我還沒有任何聲望。這是我問的第一個問題。但是,萬分感謝,這解釋了很多! – Mackenzie

0

我修改了一下代碼,這對我來說完全正常。

vowels = 'a', 'e', 'i', 'o', 'u' 

inp = input("Enter a string: ") 

count = 0 

for letters in inp: 
    if letters in vowels: 
     count += 1 


print("Count: " + str(count)) 
+0

感謝您的幫助! – Mackenzie

0
raw_input("string") 

這是一個函數,它一個字符串作爲參數,打印該字符串,從在居停你存儲整個功能的用戶,然後存儲在獲取輸入(如:變量1 =的raw_input( 「string」)會用「string」提示你,然後等待你的輸入,然後將該輸入存儲到變量1)

+0

感謝您的信息!我很感激! – Mackenzie