用==比较字符串会出错?结果

时间:2014-02-04 22:56:52

标签: python logic

我正在尝试比较两个字符串,例如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'

2 个答案:

答案 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回答了为什么,但这是另一种开始的方法。

这可能比制作所有ifelifelse

更好
>>> 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')