执行函数后,Python 脚本返回意外的“无”[重复]

2025-03-26 09:08:00
admin
原创
15
摘要:问题描述:背景:Python 完全初学者;搜索过这个问题,但找到的答案更多是关于“什么”而不是“为什么”;我打算做什么:创建一个函数,从用户那里获取测试分数输入,并根据等级量表/曲线输出字母等级;这是代码:score = input("Please enter test score: ")...

问题描述:

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


解决方案 1:

在 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

解决方案 2:

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

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

上述代码的输出是:

 None

解决方案 3:

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

为返回的语句提供如下字符串的值...这是一个非常基本的例子:

def welcome():

    return str('Welcome to the maze!')

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

print(welcome()):

结果是:

欢迎来到迷宫!

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   2079  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1459  
  建筑行业正处于数字化转型的关键时期,建筑产品生命周期管理(PLM)系统的实施对于提升项目效率、质量和协同性至关重要。特别是在 2025 年,基于建筑信息模型(BIM)的项目进度优化工具成为众多建筑企业关注的焦点。这些工具不仅能够整合项目全生命周期的数据,还能通过精准的分析和模拟,为项目进度管理提供强大支持。BIM 与建...
plm是什么软件   0  
  PLM系统开发的重要性与现状PLM(产品生命周期管理)系统在现代企业的产品研发、生产与管理过程中扮演着至关重要的角色。它贯穿产品从概念设计到退役的整个生命周期,整合了产品数据、流程以及人员等多方面的资源,极大地提高了企业的协同效率和创新能力。通过PLM系统,企业能够实现产品信息的集中管理与共享,不同部门之间可以实时获取...
国产plm软件   0  
  PLM(产品生命周期管理)系统在企业产品研发与管理过程中扮演着至关重要的角色。随着市场竞争的加剧和技术的飞速发展,企业对PLM系统的迭代周期优化需求日益迫切。2025年敏捷认证对项目管理提出了新的要求,其中燃尽图作为一种强大的可视化工具,在PLM系统迭代周期优化中有着广泛且重要的应用。深入探讨这些应用,对于提升企业的项...
plm系统主要干什么的   0  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用