坚韧柱石 发表于 2020-12-20 22:27:01

请大神帮解释一下

下面这段代码中n == n ,为什么可以这样写?
def is_palindrome(n, start, end):
      if start > end:
                return 1   
      else:
                return is_palindrome(n, start+1, end-1) if n == n else 0
      
string = input('请输入一串字符串:')
length = len(string)-1

if is_palindrome(string, 0, length):
      print('"%s"是回文字符串!' % string)
else:
      print('"%s"不是回文字符串!' % string)

塔利班 发表于 2020-12-20 22:33:22

字符串可以加索引获取对应位置字符

YunGuo 发表于 2020-12-20 23:31:45

根据索引位置获取字符串中的字符:字符串[索引位置]
例如:
s = 'abcdefg'
print(s)# 得到c
print(s)# 得到的是d
就是这么个意思。

_Konglong 发表于 2020-12-21 12:10:35

本帖最后由 _Konglong 于 2020-12-21 12:14 编辑

都搞懂了三元操作符 没道理问字符串索引的啊 我就假设你在问三元操作符了 举个栗子 print("1") if 1 or 0 else print("0")   #输出 1   在举个栗子 print("1") if 1 and 0 else print("0") #输出 0
第一个栗子就相等于
if 1 or 0:
      print("1")
else:
      print("0")
第二个栗子也只是 or 变成了 and
就是 中间判断 为真执行左边 为假执行右边
is_palindrome(n, start+1, end-1) if n == n else 0
这段代码的意思就是 如果字符串第一位和最后一位是一样的 就在执行多一次函数并改变start和end的值就是判断第二位和倒数第二位是不是一样的如果不是就返回0 代码下面的 if一接收到了0 (0==False) 就会进入else 然后就会打印 不是回文联!

坚韧柱石 发表于 2020-12-21 22:25:34

_Konglong 发表于 2020-12-21 12:10
都搞懂了三元操作符 没道理问字符串索引的啊 我就假设你在问三元操作符了 举个栗子 print("1") if 1 or 0 e ...

多谢指教

坚韧柱石 发表于 2020-12-21 22:26:23

塔利班 发表于 2020-12-20 22:33
字符串可以加索引获取对应位置字符

多谢指教
页: [1]
查看完整版本: 请大神帮解释一下