3

背景:Python 初学者;搜索了这个问题,但我找到的答案更多的是关于“什么”而不是“为什么”;

我打算做什么:创建一个函数,从用户那里获取测试分数输入,并根据等级尺度/曲线输出字母等级;这是代码:

score = input("Please enter test score: ")
score = int(score)

def letter_grade(score):
    if 90 <= score <= 100:
        print ("A")
    elif 80 <= score <= 89:
        print ("B")
    elif 70 <= score <= 79:
        print("C")
    elif 60 <= score <= 69:
        print("D")
    elif score < 60:
        print("F")

print (letter_grade(score))

这在执行时返回:

Please enter test score: 45
F
None

None不是故意的。我发现如果我使用letter_grade(score)而不是print (letter_grade(score)),则None不再出现。

我能找到的最接近的答案是“python 中的函数返回 None,除非明确指示不这样做”。但是我确实在最后一行调用了一个函数,所以我在这里有点困惑。

所以我想我的问题是:是什么导致了 的消失None?我确信这是非常基本的东西,但我找不到任何解释“幕后”机制的答案。因此,如果有人可以对此有所了解,我将不胜感激。谢谢!

4

3 回答 3

10

在 python 中,函数的默认返回值为None.

>>> def func():pass
>>> print func()     #print or print() prints the return Value
None
>>> func()           #remove print and the returned value is not printed. 
>>>

所以,只需使用:

letter_grade(score) #remove the print

另一种选择是将所有打印件替换为return

def letter_grade(score):
    if 90 <= score <= 100:
        return "A"
    elif 80 <= score <= 89:
        return "B"
    elif 70 <= score <= 79:
        return  "C"
    elif 60 <= score <= 69:
        return "D"
    elif score < 60:
        return "F"
    else:
        #This is returned if all other conditions aren't satisfied
        return "Invalid Marks"

现在使用print()

>>> print(letter_grade(91))
A
>>> print(letter_grade(45))
F
>>> print(letter_grade(75))
C
>>> print letter_grade(1000)
Invalid Marks
于 2013-06-07T01:31:16.700 回答
1

没有返回语句的函数(称为 void 函数)从函数中返回 None。要返回 None 以外的值,您需要在函数中使用 return 语句。None、True 和 False 等值不是字符串:它们是 Python 中保留的特殊值和关键字。如果我们到达任何函数的末尾并且我们没有显式执行任何 return 语句,Python 将自动返回值 None。为了更好地理解,请参见下面的示例。这里stark没有返回任何东西,所以输出将是 None

def stark(): pass
a = stark()
print a

上面代码的输出是:

 None
于 2019-03-05T18:55:40.607 回答
1

这是我的理解。如果没有给出要返回的值,则函数将向控制台返回“none”。由于 print 不是一个值,如果您使用 print() 作为您希望函数执行的唯一操作,则在您的打印语句之后,“none”将返回到控制台。所以,如果函数想要一个值,而你想要一个字符串作为返回的值......

给你返回的语句一个这样的字符串的值......这是一个非常基本的例子:

def welcome():

    return str('Welcome to the maze!')

然后打印您想要的功能:

print(welcome()):

结果是:

欢迎来到迷宫!

于 2019-07-18T14:52:42.740 回答