Python - 布尔问题

时间:2013-03-22 08:49:52

标签: python

论据是:

  

给定2个字符串,将它们更改为小写并检查其中一个是否为   在另一端

我的回答是:

a="xyz"
b="12xyz"
a = a.lower()
b = b.lower()
c=max(a,b)
d=min(a,b)
e=len(d)
if d==c[-e:]:
 print True
else:
 print False

它应该返回True。但它返回False。当我给出这个值时:

a="ambala12xyz"
b="12xyz"

它返回True。这里有什么问题 ?

5 个答案:

答案 0 :(得分:2)

你应该使用endswith

In [13]: a="ambala12xyz"

In [14]: b="12xyz"

In [15]: b.endswith(a)
Out[15]: False

In [16]: a="xyz"

In [17]: b="12xyz"

In [18]: b.endswith(a)
Out[18]: True

答案 1 :(得分:2)

您正在比较字符,您需要按长度比较字符串:

a="xyz"
b="12xyz"
a = a.lower()
b = b.lower()
if len(a) > len(b):
  c, d = a, b
else:
  c, d = b, a
e=len(d)
# print d==c[-e:]
# or:
if d==c[-e:]:
 print True
else:
 print False

答案 2 :(得分:2)

我认为最短也是最直观的方式是:

a = a.lower()
b = b.lower()
print a.endswith(b) or b.endswith(a)

或者如果你想使用max,min函数:

a = a.lower()
b = b.lower()
c = max(a, b, key=len)
d = min(a, b, key=len)
print d == c[-len(d):]

但在我看来,它与endswith函数不是那么明确。此功能对于相同长度的字符串也无法正常工作。

答案 3 :(得分:1)

另一个想法:

print(a.lower()。endswith(b.lower())或b.lower()。endswith(a.lower()))

答案 4 :(得分:0)

如果您查看变量,您将很快看到出现了什么问题:

a: xyz
b: 12xyz
c: xyz
d: 12xyz
e: 5
c[-e]: xyz

然后很明显d!= c [-e:](12xyz!= xyz)。

你做错了就是你假设

min("abc", "defgh")

将返回3,但是当对字符串执行max()和min()时,您将比较哪个字符串为“更高”或“更低”,因此实际上将返回“abc”。