2016-12-21 11 views
-1

私は、ユーザーが等級で入力した等級点の平均を計算し、入力を辞書と比較するプログラムを作ろうとしています。ここに私のコードは何が間違っていると確信しています。python dictonaryとif文

def average(g1): 
    dic = {"a": [4.],"A": [4.],"A-": [3.66],"a-": [3.66],"B+":[3.33], "b+": [3.33],"B": [3.],"b": [3.],"B-": [2.66], "b": [2.66],"C+": [2.33],"c+": [2.33],"C": [2.],"c": [2.], "D+": [1.66],"d+": [1.66],"D": [1.33],"d": [1.33],"D-": [1.], "d-": [1.],"F": [.66]} 

    for key in dic.keys(): 
     if g1 in dic.keys: 
      print ("hello") 
g1 = raw_input("Please enter grade 1: ") 
average(g1) 
+0

何が間違っていると思いますか?あなたがそれを実行するとどうなりますか?それはあなたが期待したものとどのように違うのですか? – skrrgwasme

+0

'for dic.keys():'これは何をすると思いますか? 'dic.keys'これはどういうことだと思いますか? – njzk2

答えて

0

dic.keys()は、辞書内のすべてのキーのリストを返します。 forループを使用してすべてのキーをループする必要はありません。これはあなたが望むことをするはずです。

def average(g1): 
    dic = {"a": [4.],"A": [4.],"A-": [3.66],"a-": [3.66],"B+":[3.33], "b+": [3.33],"B": [3.],"b": [3.],"B-": [2.66], "b": [2.66],"C+": [2.33],"c+": [2.33],"C": [2.],"c": [2.], "D+": [1.66],"d+": [1.66],"D": [1.33],"d": [1.33],"D-": [1.], "d-": [1.],"F": [.66]} 

    if g1 in dic.keys(): 
     print('hello') 

g1 = input("Please enter grade 1: ") 
average(g1) 
+0

(この質問はPython 3でタグ付けされているので): 'dict.keys'はPython 3ではリストを返さず、' dict_keys'型のイテレータを返します。 – DeepSpace

1

あなたは、ユーザーが入力した文字の等級に関連したGPA値を使用することもできます。私は、大文字のみを使用して辞書を簡素化

Please enter grade 1: a- 
GPA for 'A-' = 3.66 
hello 

def average(g1): 
dic = {"A": [4.], "A-": [3.66], "B+":[3.33], "B": [3.], "B-": [2.66], "C+": [2.33], "C": [2.], "D+": [1.66], "D": [1.33], "D-": [1.], "F": [.66]} 

for key in dic.keys(): 
    if g1 == key: 
     print("GPA for '{g1}' = {value}".format(g1=g1, value=dic[key][0])) 
     print ("hello") 
g1 = raw_input("Please enter grade 1: ") 
average(g1.upper()) 

サンプル出力をstr.upper()でユーザーの入力を大文字に変換して渡すことができる文字グレードです。