python字典和if语句

时间:2016-12-21 18:32:26

标签: python-3.x dictionary if-statement

我正在尝试制作一个程序来计算用户在成绩中输入的成绩点平均值,然后我将输入与字典进行比较。这是我的代码,我确定有什么问题。

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)

2 个答案:

答案 0 :(得分:1)

您可能希望使用与用户输入的字母等级相关联的GPA值:

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())

示例输出:

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

我通过仅使用大写字母成绩来简化字典,您可以将用户的输入转换为使用str.upper()转换为大写的字母。

答案 1 :(得分: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)