鱼C论坛

 找回密码
 立即注册
查看: 1317|回复: 2

[已解决]python 课后答案求助

[复制链接]
发表于 2021-2-15 22:23:03 | 显示全部楼层 |阅读模式

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

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

x
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('不是回文联!')

这块代码的中间核心部分能不能帮忙注释下,分享一下解题思路
最佳答案
2021-2-15 22:39:42
本帖最后由 jackz007 于 2021-2-15 22:44 编辑
def palindrome(string):
    length = len(string)                    # length = 字符串 string 的长度
    last = length-1                         # last 被初始化为指向 string 的最后一个字符
    length //= 2                            # 循环次数 = string 长度的一半,因为每次比较 string 中的 2 个字符
    flag = 1                                # 检查前,先假定 string 就是回文联,然后,在后面的循环中尽量予以否定
    for each in range(length):              # 开始循环,下标 each 的变化范围为: 0 ~ len(string)  // 2 - 1
        if string[each] != string[last]:    # 字符串首尾对应字符进行比较,如果不相等
            flag = 0                        # 置 flag = 0,前面一开始的假设在这里被推翻
        last -= 1                           # 字符串尾部指针向字符串开头的方向步进一个字符,准备进行下一对字符的比较

    if flag == 1:                           # 如果循环结束 flag 还是 1,那就是说,字符串所有的首尾字符对确实相等
        return 1                            # string 真的就是回文联
    else:                                   # 否则,flag = 0
        return 0                            # 既然鸡蛋中被挑出了骨头,那么,string 自然就不是回文联
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-2-15 22:39:42 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2021-2-15 22:44 编辑
def palindrome(string):
    length = len(string)                    # length = 字符串 string 的长度
    last = length-1                         # last 被初始化为指向 string 的最后一个字符
    length //= 2                            # 循环次数 = string 长度的一半,因为每次比较 string 中的 2 个字符
    flag = 1                                # 检查前,先假定 string 就是回文联,然后,在后面的循环中尽量予以否定
    for each in range(length):              # 开始循环,下标 each 的变化范围为: 0 ~ len(string)  // 2 - 1
        if string[each] != string[last]:    # 字符串首尾对应字符进行比较,如果不相等
            flag = 0                        # 置 flag = 0,前面一开始的假设在这里被推翻
        last -= 1                           # 字符串尾部指针向字符串开头的方向步进一个字符,准备进行下一对字符的比较

    if flag == 1:                           # 如果循环结束 flag 还是 1,那就是说,字符串所有的首尾字符对确实相等
        return 1                            # string 真的就是回文联
    else:                                   # 否则,flag = 0
        return 0                            # 既然鸡蛋中被挑出了骨头,那么,string 自然就不是回文联
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-15 23:38:24 | 显示全部楼层
我换了一个思路,利用reverse()来做回文判断,大佬看看怎么样。
def huiwen(string):
    string1=list(string)  #将输入字符串转化为列表
    string2=string1[:]  #复制一个列表2,用于比较
    string1.reverse()   #将列表1翻转
    if string1==string2:    #判断列表1和列表2是否相同
        return 1            #如果相同,则返回1
    else:
        return 0            #如果不同则返回0


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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-16 13:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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