鱼C论坛

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

[已解决]关于第019讲课后作业回文联的问题,求解答。

[复制链接]
发表于 2017-10-26 22:54:23 | 显示全部楼层 |阅读模式

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

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

x
结合小甲鱼老师的答案进行提问,代入上海自来水来自海上。
def palindrome(string):   #这里定义一个函数,参数应该是‘’上海自来水来自海上‘’
    length = len(string)    #length 应该等于 9
    last = length-1          #那这里的last值应该是8 (这里不明白,为什么要这样写?)
    length //= 2               #这里是地板除法,向下取整应该是 4
    flag = 1                      # 这里也不明白,有什么用
    for each in range(length):   #此处的循环值应该是 0 1 2 3
        if string[each] != string[last]:  #这步应该是证明前后是否相同?不懂,希望能代入解释下
            flag = 0          #始终不了解flag的作用,与上面那个有什么联系
        last -= 1           #这步是想说明前后循环的数应该相等,同时进一步和退一步?

    if flag == 1:         
        return 1
    else:
        return 0

string = input('请输入一句话:')
if palindrome(string) == 1:
    print('是回文联!')
else:
    print('不是回文联!')
  希望有前辈解释下我的疑问
最佳答案
2017-10-26 23:08:40
def palindrome(string):   #这里定义一个函数,参数应该是‘’上海自来水来自海上‘’
    length = len(string)    #length 应该等于 9
    last = length-1          #那这里的last值应该是8 (这里不明白,为什么要这样写?)
#这是用于字符串的索引,因为是从0开始,最后一个就是8
    length //= 2               #这里是地板除法,向下取整应该是 4
    flag = 1                      # 这里也不明白,有什么用
#做一个标记,为flag赋初值,先假定是回文
    for each in range(length):   #此处的循环值应该是 0 1 2 3
        if string[each] != string[last]:  #这步应该是证明前后是否相同?不懂,希望能代入解释下
#如果第0个字符和最后一个不相同,则。。。。,当然随着for循环依次比较第1个和倒数第二个。。。
            flag = 0          #始终不了解flag的作用,与上面那个有什么联系
#如果不相同就把标记修改为0
        last -= 1           #这步是想说明前后循环的数应该相等,同时进一步和退一步?
#each每次加一,从0到1,2,3。。。,last每次减一从8到7,6,5。。。。

    if flag == 1:         
        return 1
    else:
        return 0

string = input('请输入一句话:')
if palindrome(string) == 1:
    print('是回文联!')
else:
    print('不是回文联!')
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-10-26 23:08:40 | 显示全部楼层    本楼为最佳答案   
def palindrome(string):   #这里定义一个函数,参数应该是‘’上海自来水来自海上‘’
    length = len(string)    #length 应该等于 9
    last = length-1          #那这里的last值应该是8 (这里不明白,为什么要这样写?)
#这是用于字符串的索引,因为是从0开始,最后一个就是8
    length //= 2               #这里是地板除法,向下取整应该是 4
    flag = 1                      # 这里也不明白,有什么用
#做一个标记,为flag赋初值,先假定是回文
    for each in range(length):   #此处的循环值应该是 0 1 2 3
        if string[each] != string[last]:  #这步应该是证明前后是否相同?不懂,希望能代入解释下
#如果第0个字符和最后一个不相同,则。。。。,当然随着for循环依次比较第1个和倒数第二个。。。
            flag = 0          #始终不了解flag的作用,与上面那个有什么联系
#如果不相同就把标记修改为0
        last -= 1           #这步是想说明前后循环的数应该相等,同时进一步和退一步?
#each每次加一,从0到1,2,3。。。,last每次减一从8到7,6,5。。。。

    if flag == 1:         
        return 1
    else:
        return 0

string = input('请输入一句话:')
if palindrome(string) == 1:
    print('是回文联!')
else:
    print('不是回文联!')
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2017-10-27 21:20:31 | 显示全部楼层
冬雪雪冬 发表于 2017-10-26 23:08
def palindrome(string):   #这里定义一个函数,参数应该是‘’上海自来水来自海上‘’
    length = len( ...

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

使用道具 举报

发表于 2017-10-31 10:51:36 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-1-11 23:54:07 | 显示全部楼层
冬雪雪冬 发表于 2017-10-26 23:08
def palindrome(string):   #这里定义一个函数,参数应该是‘’上海自来水来自海上‘’
    length = len( ...

我也想了半天,看了大神解释茅塞顿开
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-8 11:54:50 | 显示全部楼层
冬雪雪冬 发表于 2017-10-26 23:08
def palindrome(string):   #这里定义一个函数,参数应该是‘’上海自来水来自海上‘’
    length = len( ...

感谢分享  似乎懂了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-3 11:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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