这是我的自定义类,它代表一个三角形。我试图编写代码来检查self.a
、self.b
和self.c
是否大于0,这意味着我有角度、角度、角度。
下面您将看到检查A和B的代码,但是当我只使用self.a != 0
时,它就可以正常工作了。我认为我没有正确地使用&
。有什么想法吗?我这样称呼它:print myTri.detType()
class Triangle:
# Angle A To Angle C Connects Side F
# Angle C to Angle B Connects Side D
# Angle B to Angle A Connects Side E
def __init__(self, a, b, c, d, e, f):
self.a = a
self.b = b
self.c = c
self.d = d
self.e = e
self.f = f
def detType(self):
#Triangle Type AAA
if self.a != 0 & self.b != 0:
return self.a
#If self.a > 10:
#return AAA
#Triangle Type AAS
#elif self.a = 0:
#return AAS
#Triangle Type ASA
#Triangle Type SAS
#Triangle Type SSS
#else:
#return unknown
你应该写:
“
&
”是按位运算符,不适合布尔运算。Python中“&&
”的等价物是“和”。检查所需内容的较短方法是使用“in”运算符:
您可以使用“in”检查iterable中是否有任何内容,它适用于:
"foo" in ("foo", 1, c, etc)
将返回true"foo" in ["foo", 1, c, etc]
将返回true"a" in "ago"
将返回true"foo" in {"foo" : "bar"}
将返回true作为对评论的回答:
是的,使用“in”比较慢,因为您正在创建一个元组对象,但实际上性能在这里不是问题,而且可读性在Python中非常重要。
对于三角形检查,更容易阅读:
比
重构也更容易。
当然,在这个例子中,它并没有那么重要,它只是一个非常简单的片段。但是这种风格导致了Pythonic代码,这导致了在大型程序上更快乐的程序员(以及减肥、改善性生活等)。
在Python中称为
and
和or
。使用关键字
and
,而不是&
,因为&
是位运算符。小心这个。。。正如你所知道的,在java和C++中,^ {< CD2}}运算符也是位运算符。在这些语言中进行布尔比较的正确方法是
&&
。类似地,|
是位运算符,||
是布尔运算符。在Python中,and
和or
用于布尔比较。相关问题 更多 >
编程相关推荐