2016-03-19 11 views
0

これは数時間前から試してきましたが、コードを正しく取得できません。私はユーザーの入力(例えば、「赤」、「青」、「緑」、「赤」)で読み込み、その色の色とその数を辞書に吐き出す。ここで辞書にユーザー入力を追加する

は私のコードです - 私が知っている何かが特に辞書を設定するには、右のそれで間違いではありません(それはまた、ブランクがユーザによって入力されるまで継続的に入力を求めるために、whileループを持っている)

INPUT '赤'、 '青'、 '緑'、 '赤'

dict = {} 
car_colours = input("Car: ") 
frequency = 0 
    while car_colours != '': 
    dict['frequency'] = car_colours.count(car_colours) 
    dict['colours'] = car_colours 
    frequency = frequency + 1 
    car_colours = input("Car: ") 
print(dict) 

また、希望の出力を得るには、以下のような出力が必要ですか?

所望の出力

Cars that are red: 2 
Cars that are blue: 1 

私は実際に私も、私は上記の持っているもので、このコードを必要としてもわからない:任意の助け

frequency = 0 
frequency = frequency + 1 

ありがとう!

+0

コードをインデントしてください。「while」ループがどこで終了するのかはわかりません。 –

+0

あなたは何を辞書に保存しますか?一意のキーごとに* one *値だけを保存することができます。 – jofel

+0

@Wojciech Ptakコードは現在インデントされています。 私は 'color'を保存したいと思うし、 'frequency'は辞書の値になります。 各色について、ユーザーから入力された回数(つまり頻度)がカウントされます。 – Alvis

答えて

3

疑わしい辞書設定に問題はほとんどありません。

'dict'はPythonのキーワードです。私は変数名として避けることをお勧めします。 Python辞書は通常は注文されません。周波数と色の名前を別々にする代わりに、色の名前をキーとして保存し、値として数えます。ここ

は、上記の変更を有するコードである:ここ

d = {} 
count = 0 
car_colours = raw_input("Car: ") 
while car_colours != '': 
    if d.has_key(car_colours): 
     d[car_colours] = d[car_colours] + 1 
    else: 
     d[car_colours] = 1 
    count = count + 1 
    car_colours = raw_input("Car: ") 

for k,v in d.iteritems(): 
    print 'Cars that are ' + k + ": " + str(v) 

サンプル試験である:enter image description here

+0

おかげで非常にVasanth - これははるかによく見ている! 'd.has_key'はどこから来たのですか? – Alvis

+0

キー(色名)が既に存在するかどうかを確認する方法です。すでに存在する場合はカウンタをインクリメントし、そうでない場合は辞書に追加します。 – Vasanth

+0

ありがとうヴァーサント、理にかなっています。私はそれがあなたのコンピュータに取り組んでいる知っているが、鉱山はスパイダーによってエラーを取得して保持しますが、すべては、私に ^ にSyntaxError未知のライン ファイル「を」OKになります使用しているのpythonのどのバージョン – Alvis

2

なぜdictよりも多くの適切なデータ構造を使用しませんか?

from collections import defaultdict 

print "Enter car colours and ^C when done..." 
try: 
    car_count = defaultdict(int) 
    while True: 
     car_colour = raw_input("Car colour: ") 
     car_count[car_colour] += 1 
except KeyboardInterrupt: 
    print 
    print "Done with input, now the result" 
    print 

for c in car_count: 
    print "Cars that are %s: %d" % (c, car_count[c]) 

結果は次のようになります。

$ python dd.py 
Enter car colours and ^C when done... 
Car colour: red 
Car colour: red 
Car colour: green 
Car colour: blue 
Car colour: ^C 
Done with input, now the result 

Cars that are blue: 1 
Cars that are green: 1 
Cars that are red: 2 
$ 

注:car_count = defaultdict(int)intが正しくフォーマットされていない場合でも、それはデータ型です。 defaultdictは、dictまで拡張されています。これまでにアクセスされていない各インデックスには、そのタイプの初期値が自動的に割り当てられます。

関連する問題