论据是:
给定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
。这里有什么问题 ?
答案 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”。