鱼C论坛

 找回密码
 立即注册
查看: 1232|回复: 5

[已解决]不懂就问

[复制链接]
发表于 2018-4-3 17:34:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
def is_palindrome(n, start, end):
        if start > end:
                return 1     
        else:
                return is_palindrome(n, start+1, end-1) if n[start] == n[end] else 0
        
string = input('请输入一串字符串:')
length = len(string)-1

if is_palindrome(string, 0, length):
        print('\"%s\"是回文字符串!' % string)
else:
        print('\"%s\"不是回文字符串!' % string)
不懂就问,0.加粗的那句话应该怎么解释,if语句可以直接跟在后面不另起吗? 为什么if后面只有条件,没有返回的值?
                 1.string不是字符吗?也可以直接放到函数中吗?
                 2.return 1是什么意思?return的值最后去了哪里?
最佳答案
2018-4-3 18:31:15
0.如果起始和最后的字符一样,就继续统计第二个和倒数第二个是不是一样,如果中间哪个不一样了就返回0
1.这里函数参数n明显是个可迭代序列,不要被他用n给迷惑了,都用上索引值了
2.返回1即返回是回文字符串,递归函数递归到最后才调用到他
如果能返回到这里,证明之前的各种调用都通过了,只不过将1传给最开始的参数

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-4-3 18:29:59 | 显示全部楼层
def is_palindrome(n, start, end):
    if start > end:
        return 1     
    else:
        if n[start] == n[end]:
            return is_palindrome(n, start+1, end-1)
        else:
            return 0


是否能懂??

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-3 18:31:15 | 显示全部楼层    本楼为最佳答案   
0.如果起始和最后的字符一样,就继续统计第二个和倒数第二个是不是一样,如果中间哪个不一样了就返回0
1.这里函数参数n明显是个可迭代序列,不要被他用n给迷惑了,都用上索引值了
2.返回1即返回是回文字符串,递归函数递归到最后才调用到他
如果能返回到这里,证明之前的各种调用都通过了,只不过将1传给最开始的参数

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-5 00:12:55 | 显示全部楼层
ba21 发表于 2018-4-3 18:29
def is_palindrome(n, start, end):
    if start > end:
        return 1     

这个能懂
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-5 09:47:02 | 显示全部楼层

is_palindrome(n, start+1, end-1) if n[start] == n[end] else 0
就是它。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-6 19:35:35 | 显示全部楼层
ba21 发表于 2018-4-5 09:47
is_palindrome(n, start+1, end-1) if n[start] == n[end] else 0
就是它。

为什么还能这样写啊?多乱啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-3-10 04:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表