0

[] 形式で数値のリストを入力するようにユーザーに要求するプログラムを Python で作成しようとしています。

次に、リスト内のこれらの数値のうち、1 から 10、10 から 20、20 から 30 の間にいくつあるかをカウントして表示する必要があります。

10 の各セクションは、そのセクション内に 0 を返すことができることを意味する数字があるかどうかに関係なくカウントされます。

これが私がこれまでに持っているものです。

the_input = raw_input("Enter numbers... ") 

the_list = [int(x) for x in the_input.strip("[]").split(",")] 

group_counter = {} 

for number in the_list:
    group_start = (number // 10) * 10 
    group_end = group_start + 9 
    group_name = "%s-%s" % (group_start, group_end) 

    group_counter.setdefault(group_name, 0) 
    group_counter[group_name] += 1 

for name, count in group_counter.items():
    print "There were %s in %s" % (count, name)
4

2 に答える 2

0

collections.Counterあなたの友達はここにいます。

import collections

the_input = raw_input("Enter numbers... ") 
the_list = [int(x) for x in the_input.strip("[]").split(",")] 
group_counter = collections.Counter(x//10 for x in the_list)
bin_range = xrange(min(group_counter.keys()), max(group_counter.keys()) + 1)
for bin_tens in bin_range:
    print "There were {} in {} to {}".format(group_counter[bin_tens], bin_tens*10, bin_tens*10+9)

編集:印刷されたカウントを 0-9 から 90-99 までのみ表示する場合は、bin_range 行を次のように変更します。bin_range = range(10)

于 2012-08-31T04:15:43.377 に答える
0

元の形式を使用する:

the_input = raw_input("Enter numbers... ") 

the_list = [int(x) for x in the_input.strip("[]").split(",")] 

group_counter = {'0-9': 0, '10-19': 0, '20-29': 0}

for number in the_list:
    if number < 0 || number >= 30:
        continue;
    if number < 10:
        group_counter['0-9']++;
        continue;
    if number < 20:
        group_counter['10-19']++;
        continue;
    if number < 30:
        group_counter['20-29']++;
        continue;

for name, count in group_counter.items():
    print "There were %s in %s" % (count, name)
于 2012-08-31T04:23:14.957 に答える