我正在尝试比较两个字符串,例如if self.Ends == '101100' or '001101'
。 self.Ends
是一个比较两个3D坐标的课程。它可以保留000100
。有八个if
elif
比较。
程序始终返回'a'
偶数self.Ends
保持另一个01字符串。
if self.Ends == '100101' or '101100':
P_line.Line = 'a'
elif self.Ends == '000100' or '100000':
P_line.Line = 'b'
答案 0 :(得分:5)
您需要将self.Ends
两侧的字符串与or
进行比较。否则它将永远是真的。即。 if 1:
与if 'a':
相同,它们都会评估为True
if self.Ends == '100101' or self.Ends == '101100':
P_line.Line = 'a'
elif self.Ends == '000100' or self.Ends == '100000':
P_line.Line = 'b'
答案 1 :(得分:1)
@jramirez回答了为什么,但这是另一种开始的方法。
这可能比制作所有if
,elif
,else
>>> mapper = {'a': ('100101', '101100'), 'b': ('000100', '100000')}
>>> def get_line(bits, default='default'):
... for k, v in mapper.items():
... if bits in v:
... return k
... return default
...
>>> get_line('100101')
'a'
>>> get_line('000100')
'b'
>>> get_line('1', 'z')
'z'
所以你的代码看起来像
P_line.Line = get_line(self.Ends)
或使用可选的默认
P_line.Line = get_line(self.Ends, 'z')