Python入门整合菜单代码输出出现"none",求调试解决方法
解决Python菜单程序中莫名出现
None的问题 嘿,我看到你遇到了菜单程序输出里莫名蹦出None的问题,这其实是Python入门阶段超常见的小坑,咱们一步步把它搞定!
问题根源
你看到的None都是因为把没有返回值的函数套在了print()里调用导致的。在Python里,任何没写return语句指定返回值的函数,默认都会返回None。当你写print(某个无返回值函数())时,Python会先执行这个函数(函数里的print会正常输出内容),然后再把函数的默认返回值None也打印出来,这就是那串莫名文字的来源。
比如你代码里这些地方都是重灾区:
print(options()) print(Student_A_Gets_A()) print(Celsius()) print(Currency_Conversion())
这些函数本身已经自带print语句输出内容了,你再套一层print(),就多打印了函数的默认返回值None。
修复方案
把所有这类print(函数名())的代码,改成直接调用函数,去掉外层的print()就行。
具体修改示例
- 原代码:
print(options())
修改后:
options()
- 原代码:
print(Student_A_Gets_A())
修改后:
Student_A_Gets_A()
- 原代码:
print(Celsius())
修改后:
Celsius()
- 原代码:
print(Currency_Conversion())
修改后:
Currency_Conversion()
你需要把代码里所有类似的地方都做这样的修改,包括各个分支里的print(options())、print(各类功能函数())等。
额外小建议
另外我注意到,你的Student_A_Gets_A()这类函数里直接用了Score变量,但这个变量是在answer == 1的分支里定义的,属于局部变量,直接在函数里引用可能会有作用域问题(比如函数在其他地方被调用就会报错)。可以把Score作为参数传给这些函数,让代码更规范:
def Student_A_Gets_A(score): print ("Student A gets Grade A") print (score)
调用的时候改成:
Student_A_Gets_A(Score)
内容的提问来源于stack exchange,提问作者mathmajor
相关产品推荐
相关产品推荐

