2016-06-23 5 views
-1

私が作業しているジョブを自動的にソートするためのPythonプログラムを作成しようとしています。これまで私は辞書を作成してきました。たとえば :辞書で変数を使用する方法

monday = ('1' : 'clean the counters') 

と番号皆を割り当てる:

joe = random.randint(1,3) 

が、私は試してみてください。

print ("Today Joe has to do the", monday[joe]") 

それがエラーを出してくれる。

これを行うには良い方法はありますか、それとも明白なものがありませんか?

+1

あなたは辞書ではない、この月曜日= {「1」のようなタプルを使用する必要があります。「クリーンcounter '}を実行し、joe変数をstringに変換します。 – Aram

+1

'' 1''は文字列です。 'random.randint(1,3)'は整数を返します。したがって、あなたの辞書にキー「1」、「2」、「3」が含まれていれば、決して整数キーでそれらを見つけることはできません。 –

答えて

1

コードにいくつかの誤りがあります。まず、あなたは同じように、辞書、ない()を定義するために{}を使用する必要があります。また

monday = {1 : 'clean the counters'} 

、あなたは、整数キーを使用して辞書を検索することはできませんので、私は、1のオフ相場を取ったことに気づくでしょうrandintは、すべてのキーが文字列である場合に生成します。あなたがあなたを印刷するとき

は最後に、おそらくたい:

print ("Today Joe has to " + monday[joe]) 

あなたが持っていた方法は、それが通常の文章を生成しませんので。

+0

申し訳ありませんが、私は誤植を逃しました、ちょうど引用エラーの感謝を実現! –

+0

@CharlesConrad問題ありません。 – Andrew

3

エラーの原因となる余分な引用符があります。また、joeに代入する整数をchar/stringに変換する必要があります。なぜなら、それは辞書のキーに格納されているからです。

より良い方法は、辞書をリストにすることです。 123char/の形式を使用すると、不要なレベルのルックアップが追加されます。例えば

Monday = ["clean the counters", "wash the floor", "take out the trash"] 
joe = random.randint(0, 2) # or joe = random.randint(0, Monday.length) 
print("Today Joe has to do the", Monday[joe])` 
+0

キーを認識してうまくやっているだけで、インデックスとして偽装していました。 –

+0

いい仕事。これは辞書を使うよりも良いです – aditya

0

があなたのコードに以下の修正を試してみて、それが動作するはずです:

monday = {'1' : 'clean the counters', '2' : 'upload the files', '3' : 'pick up the garbage'} 
joe = str(random.randint(1, 3)) 
print("Today joe has to do : " + monday[joe]) 
+0

ランダムなintを「文字列化」するよりもキーを「インテントする」方が良いと思います。 @ matt.conditはすべての点で最良ですが、辞書全体を取り除くだけです。 –

+0

ええ、私はそう思います。 – aditya

関連する問題