鱼C论坛

 找回密码
 立即注册
查看: 975|回复: 4

[已解决]19题课后题

[复制链接]
发表于 2018-6-19 22:53:41 | 显示全部楼层 |阅读模式
10鱼币
def palindrome(string):
    length = len(string)
    last = length-1
    length //= 2
    flag = 1
    for each in range(length):
        if string[each] != string[last]:
            flag = 0
        last -= 1

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

string = input('请输入一句话:')
if palindrome(string) == 1:
    print('是回文联!')
else:
    print('不是回文联!')
谁能把我解释解释这个代码,写注释谢谢
最佳答案
2018-6-19 22:53:42
因为如果是回文的话,字符分开两半,这两半是对称的。比如:ASDFGGFDSA,分开两半后为ASDFG,GFDSA,假设是A段B段
代码判断的时候,就从A段取第一个字符跟B段的倒数第一个字符比较,A段的第二个字符跟B段的倒数第二个字符比较,以此类推,只要中间有一次匹配不一致,flag标志就会置0,可以中断遍历,证明不是回文联,否则则是回文联。

最佳答案

查看完整内容

因为如果是回文的话,字符分开两半,这两半是对称的。比如:ASDFGGFDSA,分开两半后为ASDFG,GFDSA,假设是A段B段 代码判断的时候,就从A段取第一个字符跟B段的倒数第一个字符比较,A段的第二个字符跟B段的倒数第二个字符比较,以此类推,只要中间有一次匹配不一致,flag标志就会置0,可以中断遍历,证明不是回文联,否则则是回文联。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-6-19 22:53:42 | 显示全部楼层    本楼为最佳答案   
因为如果是回文的话,字符分开两半,这两半是对称的。比如:ASDFGGFDSA,分开两半后为ASDFG,GFDSA,假设是A段B段
代码判断的时候,就从A段取第一个字符跟B段的倒数第一个字符比较,A段的第二个字符跟B段的倒数第二个字符比较,以此类推,只要中间有一次匹配不一致,flag标志就会置0,可以中断遍历,证明不是回文联,否则则是回文联。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-6-19 23:05:49 | 显示全部楼层
def palindrome(string):
    length = len(string) # 字符串长度
    last = length-1 # 最后一个字符的 位置(index)
    length //= 2 # 字符串一半的长度
    flag = 1 # 用flag做标记,用来标记是否为回文联, 1是,0不是
    for each in range(length): # 以字符串一半的长度进行遍历
        if string[each] != string[last]: # 前后对比
            flag = 0
        last -= 1 #最后字符的位置 前移1位

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

string = input('请输入一句话:')
if palindrome(string) == 1:
    print('是回文联!')
else:
    print('不是回文联!')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-6-19 23:21:47 From FishC Mobile | 显示全部楼层
这个代码是怎么判断是不是回文联的,为什么要用这个字符串的一半进行比较
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-6-20 08:33:39 | 显示全部楼层
小白100000000 发表于 2018-6-19 23:21
这个代码是怎么判断是不是回文联的,为什么要用这个字符串的一半进行比较

因为对称关系,如果是回文,那么必须对称
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 01:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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