Python级计算器

Python级计算器,python,Python,我是新来的,所以请原谅我的打字错误。我最近刚开始学习Python,所以当我练习编写一些代码时,我在我的脚本中遇到了这些非常不寻常的错误,它们本不应该存在。请帮助我理解为什么以及如何摆脱它。我试着制作一个成绩计算器,下面是我写的脚本: def ComputeGrade(Score): if score < 0 or score > 1: print ("Bad Score") elif score == 10.0: print ("Bad

我是新来的,所以请原谅我的打字错误。我最近刚开始学习Python,所以当我练习编写一些代码时,我在我的脚本中遇到了这些非常不寻常的错误,它们本不应该存在。请帮助我理解为什么以及如何摆脱它。我试着制作一个成绩计算器,下面是我写的脚本:

def ComputeGrade(Score):
    if score < 0 or score > 1:
        print ("Bad Score")
    elif score == 10.0:
        print ("Bad Score")
    elif score < 10.0:
        print ("A")
    elif score >= 0.8:
        print ("B")
    elif score >= 0.7:
        print ("C")
    elif score >= 0.6:
        print ("D")
    elif score < 0.6:
        print ("F")

try:
   score = float(input("Enter Score: "))
   print (ComputeGrade(score))
except ValueError as e:
    print ("Bad Score")
def计算等级(分数):
如果得分<0或得分>1:
打印(“坏分数”)
elif得分==10.0:
打印(“坏分数”)
elif分数<10.0:
打印(“A”)
elif得分>=0.8:
打印(“B”)
elif得分>=0.7:
打印(“C”)
elif得分>=0.6:
打印(“D”)
elif评分<0.6:
打印(“F”)
尝试:
分数=浮动(输入(“输入分数:”)
打印(计算等级(分数))
除ValueError为e外:
打印(“坏分数”)
`它不给我一个输出作为“等级”或错误消息“坏分数”,而是显示
如果您能向我解释一下到底出了什么问题,那就太好了。

您的参数是带大写字母“S”的分数,您使用的是带小写字母“S”的可变分数。确保它们匹配或将它们视为不同的变量。得分!=得分

另外,如果希望print(ComputeGrade(score))打印值,则需要在ComputeGrade()函数中返回一个值。i、 e

def printvalue():
    return "VALUE"
print(printvalue()) #this prints out the returned value of printvalue()

欢迎来到木桩溢出

该行:

print (ComputeGrade(score))
实际上打印函数在内存中的位置,而不是函数中的位置。由于您已经在ComputeGrade内部打印,因此无需打印

你可以:

让ComputeGrade返回一个字符串,并打印该字符串

def ComputeGrade(score):
...
elif (score >= 0.8):
    return "B"
...

print ComputeGrade(score)
或者,您可以继续在函数本身中打印,并删除ComputeGrade上的print语句:

ComputeGrade(score)

以下是

正如其他答案所说,您不需要再次打印。只需调用函数:

ComputeGrade(score)
顺便说一下,这里显示的成绩计算器有一个问题,因为所有有效的成绩都会变成“a”,因为所有有效的成绩都会命中第一个
elif
语句,并且小于10(这不是应该是1.0而不是10吗?)。此外,在A和B之间没有任何分界点(我假设它应该是0.9?)

建议:每当你发现自己使用了大量的<代码> ELIF < /Cord>语句时,请考虑使用字典来代替。字典允许您根据值“查找”某些内容

它可能是这样的(因为变量区分大小写,所以我已将
score
切换为小写):

def计算等级(分数):
等级查找={

再一次,就像其他帖子所说的那样,你有两次
print
。而且,你的逻辑看起来不正确,这里有一些东西供你参考:

def ComputeGrade(score):

    if score > 0 and score <= 1:
        if score < 0.6:
            print("F")
        elif score < 0.7:
            print("D")
        elif score < 0.8:
            print("C")
        elif score < 0.9:
            print("B")
        else:
            print("A")
    else:
        print("Bad Score")

try:
   score = float(input("Enter Score: "))
   ComputeGrade(score)
except ValueError as e:
    print ("Bad Score")
def计算等级(分数):

如果分数大于0,则无需再给第二个建议打分。在Python中,您不需要像您所说的那样分割界限。哦,太酷了,我不知道。谢谢您提供的信息,我编辑了我的答案。是的。Python之所以如此棒的另一个小原因是。分数!=分数是我在Python中学到的第一件事!我怎么能这么快就忘记这一点,我太笨了。无论如何,谢谢你的帮助!它帮了我很多忙。我喜欢你简洁的答案。今天学习一些新东西。但是请注意,你可能需要将
score
转换为
float
数据类型,例如
score=float(输入(“输入分数”))
@ian0411是的,我已经删除了它,打算在其他地方做,改变了主意,忘了把它放回去。谢谢。很抱歉,自从我一个月前刚开始工作以来,你在那里说的话已经让我不知所措了。我还没有接触过元组和字典之类的话题,所以我还有很多东西要学。但是说实话,我确实学到了一些新的东西,即使它现在太过火了,它也确实有帮助。@Jarmos太棒了。另外:我知道这是不是让人难以理解或难以理解,但元组和字典是至关重要的(而且非常基本)语言的一部分,所以在继续更多的编码之前,请尽快学习它们。@Jarmos在很多方面,python字典可能是语言中最重要的部分。语言中没有什么比这更重要的了。是的,我还在学习,我刚开始一个月,所以我的逻辑仍然很新。Th感谢所有这些令人惊讶的评论,我想我现在可以学得很快了!而且我要说的是,你的脚本看起来非常干净和有条理,我想从现在起我应该把你的作为参考。现在很有意义,谢谢你的建议。我还在学习,一个月前就开始了。任何建议都是一个巨大的合作伙伴自信对我来说是一种鼓舞。
def ComputeGrade(score):

    if score > 0 and score <= 1:
        if score < 0.6:
            print("F")
        elif score < 0.7:
            print("D")
        elif score < 0.8:
            print("C")
        elif score < 0.9:
            print("B")
        else:
            print("A")
    else:
        print("Bad Score")

try:
   score = float(input("Enter Score: "))
   ComputeGrade(score)
except ValueError as e:
    print ("Bad Score")