Discuss / Python / 大佬们帮我看看要怎么改,如果直接输入非数字的话会显示could not convert string to float: 'a'

大佬们帮我看看要怎么改,如果直接输入非数字的话会显示could not convert string to float: 'a'

Topic source

王茉莉four

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

import math

def quadratic(a, b, c):

    if not (isinstance(a, (int, float)) and isinstance(b,(int,float)) and isinstance(c,(int,float))):

        raise TypeError('输入数据有误')

    x1=(-b+math.sqrt(delta))/(2*a)

    x2=(-b-math.sqrt(delta))/(2*a)

    return x1,x2

a=float(input())

b=float(input())

c=float(input())

delta=b**2-4*a*c

if delta<0:

    print('方程无解') 

else:

    print(quadratic(a, b, c))

王茉莉four

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

如果去掉

a=float(input())

b=float(input())

c=float(input())就会反映未定义abc,所以要怎么改才能输入字母的时候显示输入数据有误

Adorkable1

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

1.你的if判断是如果所有的abc都不为(int和float)类型,才会raise这个错误,把and改成or就好了,而且你下面的input已经将输入数据强制转换成float类型了

2.你的x1和x2计算步骤应该放在判断delta的else下面,只有delat大于0了,才会有结果


  • 1

Reply