执行函数后,Python脚本会返回意外的“无”

时间:2013-06-07 01:29:48

标签: python printing syntax python-3.x nonetype

规格:Ubuntu 13.04 Python 3.3.1

背景: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

无意“无”。我发现如果我使用(letter_grade(score)代替print (letter_grade(score)),则不会再显示“无”。

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

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

3 个答案:

答案 0 :(得分:8)

在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

答案 1 :(得分:0)

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

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

以上代码的输出为:

 None

答案 2 :(得分:0)

这是我的理解。如果未提供返回值,则函数将向控制台返回“无”。由于print不是值,因此如果您仅使用print()作为函数要执行的操作,则在打印语句后,“ none”将返回到控制台。因此,如果函数需要一个值,并且您希望将字符串作为返回的值...

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

1.0

然后在您想要的位置打印该函数:

https://mywebsite.com/en/themodule/main
Route : module-ps_themodule-main

结果是:

  

欢迎来到迷宫!