我需要检查字符串是否是回文(没有条件和循环),如果字符串是回文,则打印'0',如果不是回文则打印'-1'。
我不确定用string[::-1]
反转字符串后该怎么做。
如何比较两个字符串以检查回文而没有任何循环或条件?
(PS。我不应该使用任何循环或条件(包括if,else))
答案 0 :(得分:0)
只是比较不需要任何循环或条件:
string == string[::-1]
这将返回True
或False
。
有关如何将其获取到0
或-1
的信息,以下是一些提示:
bool
强制转换为int
:True
→0,False
→1 我确实想出了一个完整的解决方案,但是由于这看起来像是作业,所以我不想只是给。我希望这些提示会鼓励您自己弄清楚。
关于其价值,如果允许使用条件,我建议使用三元if
语句:
-1 if string == string[::-1] else 0
答案 1 :(得分:0)
希望这会有所帮助:
print(str_a == str_a[::-1] and '0' or '-1')
答案 2 :(得分:0)
当您要求解释时,我正在为您写一个答案。
但是请注意,除了非常特殊的情况(例如高尔夫球规则),我强烈不鼓励这样做。
如果您不想使用if
else
,则可以使用True
隐式转换为1
并{{1} }到False
。
您可以通过两种方式使用它:
数组中的访问元素将0
转换为bool
,让我们构造一个数组,在正确的索引处使用正确的元素:
int
如果[-1,0][string==string[::-1]]
的计算结果为string==string[::-1]
(这是一个自动生成的记录),则将访问数组的第二个元素。否则,第一个。
另一种解决方案是找到一个将True
转换为1
,并将0
转换为0
的“函数”。简单的是-1
哪个导致:
f(x) = x - 1
请记住,我的评论不是一个真实的解决方案,而是一个玩笑,您可能不应该在现实世界中使用它!
PS:“无条件”,我怀疑它的意思是“没有一个字母一个字母地比较”,但我确实认为
(string == string[::-1]) - 1
完全可以接受。