如果单词是回文字母,则打印0;否则,则打印-1(无条件和循环)

时间:2019-07-09 17:21:46

标签: python-3.x palindrome

我需要检查字符串是否是回文(没有条件和循环),如果字符串是回文,则打印'0',如果不是回文则打印'-1'。

我不确定用string[::-1]反转字符串后该怎么做。 如何比较两个字符串以检查回文而没有任何循环或条件?

(PS。我不应该使用任何循环或条件(包括if,else))

3 个答案:

答案 0 :(得分:0)

只是比较不需要任何循环或条件:

string == string[::-1]

这将返回TrueFalse

有关如何将其获取到0-1的信息,以下是一些提示:

  • 您可以将bool强制转换为intTrue→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

您可以通过两种方式使用它:

解决方案1 ​​

数组中的访问元素将0转换为bool,让我们构造一个数组,在正确的索引处使用正确的元素:

int

如果[-1,0][string==string[::-1]] 的计算结果为string==string[::-1](这是一个自动生成的记录),则将访问数组的第二个元素。否则,第一个。

解决方案2

另一种解决方案是找到一个将True转换为1,并将0转换为0的“函数”。简单的是-1

哪个导致:

f(x) = x - 1

请记住,我的评论不是一个真实的解决方案,而是一个玩笑,您可能不应该在现实世界中使用它!

PS:“无条件”,我怀疑它的意思是“没有一个字母一个字母地比较”,但我确实认为

(string == string[::-1]) - 1

完全可以接受。