鱼C论坛

 找回密码
 立即注册
查看: 946|回复: 8

[已解决]我又来了

[复制链接]
发表于 2020-5-18 23:22:13 From FishC Mobile | 显示全部楼层 |阅读模式

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

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

x

  1. #写一个检测文字是否为回文联的函数
  2. str1=input('dhhdh')
  3. def myfun(n):
  4.     lenth=len(n)
  5.     if lenth==1:
  6.       
  7.         print(n,'是回文联')
  8.     if lenth==0:
  9.         print(n,'是回文联')
  10.     if n[0]==n[-1]:
  11.         return myfun(n[1:lenth-1])
  12.     else:
  13.         print(n,'不是回文联')
  14.    
  15. myfun(str1)
复制代码

程序报错,index超出范围了
最佳答案
2020-5-18 23:30:09
本帖最后由 Twilight6 于 2020-5-18 23:31 编辑

如果递归到最后为空字符串 就说明 前面所有递归时候你这里的条件都满足
  1. if n[0] == n[-1]:
复制代码

所以你把代码改成这样即可
  1. str1 = input('dhhdh')

  2. def myfun(n):
  3.     lenth = len(n)
  4.     if lenth == 0:
  5.         return n+'是回文联'
  6.         # 因为你这边是print 打印 不会终止代码继续运行导致代码为空字符串时继续下面的代码导致索引出错
  7.     if n[0] == n[-1]:
  8.         return myfun(n[1:lenth - 1])
  9.     else:
  10.         return n+'不是回文联'
  11. print(mufun(str1))
复制代码

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

使用道具 举报

发表于 2020-5-18 23:25:31 | 显示全部楼层
本帖最后由 Twilight6 于 2020-5-18 23:34 编辑

因为你这边是print 打印 不会终止代码继续运行导致代码为空字符串时继续下面的代码导致索引出错
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-18 23:30:09 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Twilight6 于 2020-5-18 23:31 编辑

如果递归到最后为空字符串 就说明 前面所有递归时候你这里的条件都满足
  1. if n[0] == n[-1]:
复制代码

所以你把代码改成这样即可
  1. str1 = input('dhhdh')

  2. def myfun(n):
  3.     lenth = len(n)
  4.     if lenth == 0:
  5.         return n+'是回文联'
  6.         # 因为你这边是print 打印 不会终止代码继续运行导致代码为空字符串时继续下面的代码导致索引出错
  7.     if n[0] == n[-1]:
  8.         return myfun(n[1:lenth - 1])
  9.     else:
  10.         return n+'不是回文联'
  11. print(mufun(str1))
复制代码

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

使用道具 举报

 楼主| 发表于 2020-5-18 23:31:00 From FishC Mobile | 显示全部楼层
Twilight6 发表于 2020-5-18 23:25
你这样肯定是会超出范围的,像我刚刚那样递归着写才行。前面加行判断n =='' 是否等于空字符串
因为最后一 ...

我写的if lenth==0不就是判断参数是不是空了吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-18 23:32:15 | 显示全部楼层
tiger吴 发表于 2020-5-18 23:31
我写的if lenth==0不就是判断参数是不是空了吗

没错,你看下我代码里的注释 要把print改成return
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-18 23:34:01 | 显示全部楼层
tiger吴 发表于 2020-5-18 23:31
我写的if lenth==0不就是判断参数是不是空了吗

我前面第一次说的是错的,后面代码里的解释才是对的 抱歉
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-18 23:39:50 From FishC Mobile | 显示全部楼层
Twilight6 发表于 2020-5-18 23:34
我前面第一次说的是错的,后面代码里的解释才是对的 抱歉

感谢,明白的明明白白了,另外判断长度为基数的情况我多余了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-18 23:41:00 | 显示全部楼层
tiger吴 发表于 2020-5-18 23:39
感谢,明白的明明白白了,另外判断长度为基数的情况我多余了

欢迎继续提问
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-19 00:01:29 From FishC Mobile | 显示全部楼层
Twilight6 发表于 2020-5-18 23:41
欢迎继续提问

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-19 18:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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