我正在尝试制作一个程序来计算用户在成绩中输入的成绩点平均值,然后我将输入与字典进行比较。这是我的代码,我确定有什么问题。
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 :(得分: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)