2016-11-07 2 views
-1
s = str(input("Please enter your line of text: ").lower()) 
only_vowels = re.sub(r"[^aeiou]", "", s) 
c = (Counter(list(only_vowels))) 
print(c) 

if len(c) >= 1: 
    most = c.most_common()[-1] 
    result = (most[0]) 

    i = -2 
    if len(c)>=2: 
     while (c.most_common()[i][1]) == most[1]: 
      result = ", ".join((result, c.most_common()[i][0])) 
      i = i-1 


    print("The least common vowel(s) in the inserted sentence is/are",  (result),"and it/they appear(s)",most[1],"times.") 

else: 
    print("You have not inserted any vowels into this sentence.") 

コードは、コードのこの作品に出トリップ 'しばらく(c.most_common()[I] [1])==最も[1]:'ループリストインデックスが範囲外ですが、意味がありませんか?

任意のアイデアなぜですか?

+1

'c'は' Counter'です。 –

+0

'c'や' most'変数の定義や、このスニペットの前にどのように使われているかなど、もっと多くのコンテキストを知らなくても、この問題を理解することは難しいでしょう。 – wilkesybear

+0

元の質問を確認してください。問題は私のカウンター機能が機能していないことに気づいた。この問題を解決する方法はありますか(オリジナルQ編集済み) –

答えて

0

リストにはいくつのエントリがありますか? i = -2の場合、Pythonがリストを逆順に通過できるように少なくとも2つのエントリが必要です。

+0

こんにちはKev、元の質問を確認してください。私はそれを完全に編集しました。私は問題が何であるかを理解し、今このコーディングを有効にするために私のカウンターの問題を解決する方法を工夫する必要があります! –

0

cがCounter型のオブジェクトであるため、 "Counter"が表示されます。

カウンタには最も一般的なオカレンスを取得する方法がありますが、最も一般的でないものはありません。どうすればいいですか:

from collections import defaultdict 

occurrences = defaultdict(list) 
vowels = "aeiou" 

sentence = input() 

for v in vowels: 
    if v in sentence: 
     occurrences[sentence.count(v)].append(v) 

try: 
    less_frequent_vowels = occurrences[min(occurrences)] 
except ValueError: 
    less_frequent_vowels = [] 
+0

これは実際に有望そうです。いくつの母音が何回使用されているかを取得するために働きます。どうすれば最小の出現を印刷できますか?これは複数の母音かもしれません! (e、iとoが一度だけ使用されている場合は、すべて3が印刷される必要があります) –

+0

はすでに考慮されています。 less_frequent_vowelsはあなたが探しているもののリストです。 –

+0

try:print( "、" .join(less_frequent_vowels)) –

関連する問題