2017-11-24 15 views
-1

ユーザが入力するプロンプトが表示されるリスト内の各数字の出現数(1~100の数字)を見つける必要があります。私の考えは各数字を数え、まったく発生しない場合は何もしないでください。これを行うためのアイデアはありますか?数字の出現数をカウントする

あなたがPythonで
il1 = eval(input("Enter integers between 1 and 100 ")) 

lst1 = [] 



for i in range(0,len(il1)): 
    lst1.append(il1[i]) 

for i in range(0,len(lst1)): 
    for j in range(1,100+1): 
     if lst1.count([j]) != 0: 
      print(i,"occurs",lst1.count[j],"times") 
     else: 
      continue 
+0

なぜ 'eval'を使うのですか? 'なぜ' j'をリストに入れて 'count()'を呼びますか?なぜインデックス 'j'で' count'にアクセスしようとしていますか?おそらく[コレクションモジュールからのカウンタ](https://docs.python.org/3/library/collections.html#collections.Counter) – MooingRawr

+0

を見てください。あなたはPythonをjavaのように記述します。これはPythonで1行で行うことができます – user1767754

+3

[リスト項目の出現数をカウントする方法]の可能な複製?(https://stackoverflow.com/questions/2600191/how-to-count-the-occurrences-of-a-list-item) – trentcl

答えて

0

編集evalの利用がbad practiceと考えられているように、私は正規表現を経由して、解析の数字を示唆しています。 Other他のプロパティを持つオプションも可能です。

import re 

LIMITS = (1, 100) 

line = input("Enter integers between %d and %d: " % LIMITS) 

# parse input for all possible numbers 
numbers = [int(digits) for digits in re.findall(r'[0-9]+', line)] 

# filter for valid numbers in given range 
numbers = [n for n in numbers if LIMITS[0] <= n <= LIMITS[1]] 

# count occurences; save in dict for easy use later 
occurences = {} 
for number in numbers: 
    if number in occurences: 
     occurences[number] += 1 
    else: 
     occurences[number] = 1 

print(occurences) 

はい、これは1行に絞ることができます。しかし、読みやすくするためには、そうしないでください。 :-)

+0

与えられた入力に対して正規表現を使用する理由は何ですか? – user1767754

+0

@ user1767754 OPのサンプルコードでは、整数のリストは 'eval'を使って与えられました。これは私には危険に見えますが、正規表現は代替的で堅牢な解決策のようです。 – creativecoding

+0

それは過剰です。 – user1767754

0

に:

yourNum = 5 
[1,2,3,4,5,5].count(yourNum) 
> 2 
+0

それはループで動作していないようです。 – SilverCrafter7

関連する問題