Python脚本在执行函数后意外返回“None”

2024-05-23 13:47:59 发布

您现在位置:Python中文网/ 问答频道 /正文

背景: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的消失?我确信这是非常基本的东西,但我找不到任何解释“幕后”机制的答案。所以我很感激有人能帮我解释一下。谢谢您!


Tags: 函数答案用户testnone分数gradescore
3条回答

在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

没有返回语句(称为void Functions)的函数不会从函数返回任何值。若要返回“无”以外的值,需要在函数中使用return语句。 像None、True和False这样的值不是字符串:它们是python中被保留的特殊值和关键字。 如果我们到达任何函数的末尾,并且没有显式执行任何返回语句,Python将自动返回值None。有关更好的理解,请参见下面的示例。这里stark不返回任何内容,因此输出将为无

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

以上代码输出为:

 None

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

将返回语句的值设为如下字符串。。。 下面是一个非常基本的例子:

def welcome():

    return str('Welcome to the maze!')

然后将函数打印到您希望的位置:

print(welcome()):

结果是:

Welcome to the maze!

相关问题 更多 >