Discuss / Python / 求助!为什么计算结果是对的,测试会失败

求助!为什么计算结果是对的,测试会失败

Topic source

SherryMaoMAO

#1 Created at ... [Delete] [Delete and Lock User]
# /usr/bin/env python3
# -*- coding: utf-8 -*-
import math
def quadratic(a, b, c):
	if not isinstance(a+b+c, (int, float)):
		raise TypeError('bad operand type')
	d=b*b-4*a*c
	if a==0:
		return'a can not be zero'
	elif d<0:
		return'no result'
	elif d==0:
		x1=x2=-b/(2*a)
		return('%.1f %.1f' % (x1, x2))
	elif d>0:
	    x1=(-b+ math.sqrt(d))/(2*a)
	    x2=(-b- math.sqrt(d))/(2*a)
	    return('%.1f %.1f' % (x1, x2))
a=float(input('a='))
b=float(input('b='))
c=float(input('c='))
print(quadratic(a,b,c))
#test
print('quadratic(2,3,1)=', quadratic(2,3,1))
print('quadratic(1,3,-4)=', quadratic(1,3,-4))
if quadratic(2,3,1) != (-0.5, -1.0):
	print('failure')
elif quadratic(1,3,-4) != (1.0,-4.0):
	print('failure')
else:
	print('successful')

输入a=1,b=3,c=-4,输出结果也是(1.0,-4.0),为什么测试结果是失败的,求各位大佬帮看看,谢谢!

return('%.1f %.1f' % (x1, x2)) 格式化输出了  可以用x = quadratic(2,3,1)  然后 print(type(x)) 你会发现类型成 'str'了,看着结果是一样,实际不一样。

直接return x1 ,x2 即可

Assassin47995

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

你看老师给的测试代码,代码的第一个if条件

quadratic(2,3,1) != (-0.5, -1.0)

你都没过,肯定失败啊


  • 1

Reply