如何消除Python程序中除法操作时输出的None值?
问题解决办法
你遇到的None输出问题,核心原因是:divide函数在除数为0时只执行了打印提示的操作,但没有返回任何值,Python函数默认会返回None;而你调用时用了print(divide(num1,num2)),所以会把函数返回的None也打印出来。另外你写的除数判断逻辑完全错误,根本没起到检查除数是否为0的作用。
下面是两种可行的修正方案:
方案一:让函数返回提示或计算结果,外部统一打印
a = input("What would you like to do? ") num1 = input("Input value one ") num2 = input("Input value two ") def add(x,y): return int(x) + int(y) def minus(x,y): return int(x) - int(y) def multiply(x,y): return int(x) * int(y) def divide(x,y): y_int = int(y) if y_int == 0: return "Number can not be equal zero" else: return int(x) // y_int if a == "Addition": print(add(num1,num2)) elif a == "Minus": print(minus(num1,num2)) elif a == "Multiply": print(multiply(num1,num2)) elif a == "Division": print(divide(num1,num2))
说明:把divide函数里的print改成return,这样除数为0时函数返回提示字符串,外部打印时只会输出这个字符串,不会出现None;同时修正了判断条件,正确检查除数是否为0。
方案二:函数只处理正常计算,异常提示放到外部判断
a = input("What would you like to do? ") num1 = input("Input value one ") num2 = input("Input value two ") def add(x,y): return int(x) + int(y) def minus(x,y): return int(x) - int(y) def multiply(x,y): return int(x) * int(y) def divide(x,y): return int(x) // int(y) if a == "Addition": print(add(num1,num2)) elif a == "Minus": print(minus(num1,num2)) elif a == "Multiply": print(multiply(num1,num2)) elif a == "Division": y_int = int(num2) if y_int == 0: print("Number can not be equal zero") else: print(divide(num1,num2))
说明:divide函数只负责正常除法计算,把除数为0的判断移到调用环节,这种情况下不会触发print(divide(...)),自然不会输出None。
另外要注意:你原来写的(int(num1)>=0 or int(num2)!=-1)>=0完全是逻辑错误,它会先把括号里的条件转成布尔值(True/False),再转成整数(True=1、False=0)和0比较,根本达不到检查除数是否为0的目的,这也是你之前逻辑失效的关键。
内容的提问来源于stack exchange,提问作者Shavaiz
相关产品推荐
相关产品推荐

