Python中的真/假直角函数

0 投票
3 回答
9376 浏览
提问于 2025-04-17 08:33

我好像没法让我的函数正常工作。当我输入3作为a,2作为b,3.61作为c时,这个函数是可以正常运行的。但是,当我换个顺序输入这些值,比如把3.61放在a的位置,3放在b的位置,2放在c的位置时,它就返回了false。我搞不清楚问题出在哪里。谢谢大家的帮助!

a = input("Enter a ")
b = input("Enter b ")
c = input("Enter c ")


def isright_angled():
    if abs((a**2+b**2)-(c**2)) < 0.1 or abs((c**2-a**2)-(b**2)) < 0.1 or abs((c**2-b**2)-(a**2)) < 0.1:                         
        return True
    else:
        return False

print isright_angled()

3 个回答

0

在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。这些问题可能会让人感到困惑,尤其是对于刚开始学习编程的人来说。

比如说,当你在写代码的时候,可能会发现某个功能没有按照你预期的那样工作。这时候,你可能会去网上查找解决方案,像是在StackOverflow这样的论坛上提问。

在这些论坛上,其他程序员会分享他们的经验和解决办法。有时候,他们会给出一些代码示例,帮助你更好地理解问题所在。

总之,编程的过程中遇到问题是很正常的,重要的是要学会如何寻找帮助和解决方案。记得多多练习,慢慢你就会变得越来越熟练了。

a = int(input("Enter the side length" ))
b = int(input("Enter the side length" ))
c = int(input("Enter the side length" ))

def is_right_triangle(a,b,c):
    '''
    is_right_triangle(a,b,c) -> bool
    returns True if a,b,c is a right triangle with hypotenuse c
    '''
    a, b, c = sorted([a, b, c])
    return a*a + b*b == c*c

print(is_right_triangle(a,b,c))
5

在一个直角三角形中,斜边是三条边中最长的那条。你可以利用这一点来避免重复测试三次,这就是“不要重复自己”的原则。还有一点要避免的是使用 if something: return True else: return False 这种写法。通常可以更简单地写成 return something。第三,函数可以接收参数,而不是依赖全局变量:这样会让代码更容易理解,而且减少函数之间互相干扰的可能性。我觉得 a * aa ** 2 更容易理解,但这只是个人喜好。把这些结合起来:

def is_approximately_right_angled(a, b, c):
    a, b, c = sorted([a, b, c])
    return abs(a * a + b * b - c * c) < 0.1

a = input('enter a ')
b = input('enter b ')
c = input('enter c ')
print is_approximately_right_angled(a, b, c)

如果代码不工作,你可以通过添加一些检查来加快开发进度。如果你在写一个大程序,可以写单元测试,但在这里只需在模块中添加一些断言,就能避免每次测试时都要输入 a、b、c。

我会在 a = input... 这一行之前加上类似这样的代码:

assert is_approximately_right_angled(3, 4, 5)
assert is_approximately_right_angled(3, 5, 4)
assert is_approximately_right_angled(3, 2, 3.61)
assert not is_approximately_right_angled(3, 5, 5)

有了这些代码,你在输入数字之前就能对代码有一些信心。当你发现代码不工作的情况时,可以把它们作为额外的检查添加进来。

撰写回答