【问题标题】:python dictionary and if statementspython字典和if语句
【发布时间】:2016-12-21 18:32:25
【问题描述】:

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

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)

【问题讨论】:

  • 是什么让你觉得有些不对劲?当你运行它时会发生什么?它与您的预期有何不同?
  • for key in dic.keys(): 你认为这是做什么的? dic.keys你认为这是做什么的?

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


【解决方案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()

【讨论】:

    【解决方案2】:

    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)
    

    【讨论】:

    • 只是为了挑剔(因为这个问题是用 Python 3 标记的):dict.keys 在 Python 3 中不返回列表,而是返回 dict_keys 类型的迭代器。
    猜你喜欢
    • 2012-06-06
    • 2013-04-02
    • 1970-01-01
    • 2021-11-15
    • 2010-09-21
    • 2021-06-28
    • 2014-07-18
    • 2016-05-21
    • 1970-01-01
    相关资源
    最近更新 更多