Discuss / Python / 交作业啦!

交作业啦!

Topic source

Ryan_CL

#1 Created at ... [Delete] [Delete and Lock User]

import math a=float(input('请输入参数a:')) b=float(input('请输入参数b:')) c=float(input('请输入参数c:')) def quadratic(a,b,c): if (bb-4ac)>0:#判断大小要加括号 x1=(-b+math.sqrt((bb)-4ac))/(2a) x2=(-b-math.sqrt((bb)-4ac))/(2a) print('此方程有两个不同的解:') return x1,x2 if (b**2-4ac)==0: x=(b/(2a)) print('此方程有唯一解:x=%s'%x) else: print('此方程无解') print(quadratic(a,b,c))

请教:为何只有一个解的时候,在最后会出现一个None?

请输入参数a:1 请输入参数b:2 请输入参数c:1 此方程有唯一解:x=1.0 None

YcanJ

#2 Created at ... [Delete] [Delete and Lock User]

因为你的第二个if语句只有print语句,并没有return语句,在没有return语句的情况下python会默认返回一个None

hanmsc

#3 Created at ... [Delete] [Delete and Lock User]

我把几个return都加上了还是会返回none,原因我觉得是只要return后面有其他函数,比如你这里的print,就会回一个none。如果是值就不会有none

YcanJ

#4 Created at ... [Delete] [Delete and Lock User]

第一次的回复,没讲清楚,抱歉。

首先,我们区分一下print函数和return语句,print函数是一个输出函数,会将你指定的内容输出,而return语句是返回函数的结果。

在楼主的这个实例中,最后你是用print函数输出了quadratic()函数的结果,而在楼主的第二个if语句和最后的else语句中并没有return语句,即如果执行到这两个分支的话,quadratic函数是没有返回值的,在没有返回值的情况下,默认返回None。所以,楼主可以测试一下,当你输入一个没有解的方程时,也会出现一个None,即是else语句中产生的None。(#3,如果添加了return语句,并没有指定return语句返回的内容,默认还是返回None)

其实,楼主这个实例只需做一个小小的改动就可以免除这种困扰。将第一个if语句的两个根直接在print函数中输出,不用return语句返回,在最后直接调用函数,而不必用print函数输出quadratic函数的返回值。

刚开始学习Python,有不对的地方,还请大家多多指教!

import math a=float(input('请输入参数a:')) b=float(input('请输入参数b:')) c=float(input('请输入参数c:')) def quadratic(a,b,c): if (bb-4ac)>0:#判断大小要加括号 x1=(-b+math.sqrt((bb)-4ac))/(2a) x2=(-b-math.sqrt((bb)-4ac))/(2a) print('此方程有两个不同的解:') return(x1,x2) if (b**2-4ac)==0: x=(b/(2a)) return('此方程有唯一解:x=%s'%x) else: return('此方程无解') print(quadratic(a,b,c))

改了下后两个分支的return,两个解的有没办法一个return输出,不用print?


  • 1

Reply