鱼C论坛

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

[已解决]请求注释,帮忙理解下

[复制链接]
发表于 2020-9-1 14:45:29 | 显示全部楼层 |阅读模式

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

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

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('不是回文联!')
最佳答案
2020-9-1 16:14:44
def palindrome(string): #定义函数,传入字符串
    length = len(string) #取字符串长度
    last = length-1  #最后一位下标
    length //= 2  #地板除2,相当于字符串折中
    flag = 1      #标记
    for each in range(length):  #遍历字符串每个元素
        if string[each] != string[last]:
            flag = 0 #首尾不同时,标记改变
        last -= 1 #尾部前移(同时还有for循环决定的头部后移)

    if flag == 1:  #返回标记
        return 1 #1为是回文串,0不是
    else:
        return 0

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

使用道具 举报

发表于 2020-9-1 15:59:56 | 显示全部楼层
def palindrome(string):
    length = len(string)
    last = length-1
    length //= 2
    flag = 1
    print("length的值:",length)
    for each in range(length):
        print(string[each] , string[last],"each=",each,"last=",last)
        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('不是回文联!')

请输入一句话:我试试我
length的值: 2
我 我 each= 0 last= 3
试 试 each= 1 last= 2
是回文联!
请输入一句话:我是使我
length的值: 2
我 我 each= 0 last= 3
是 使 each= 1 last= 2
不是回文联!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-1 16:01:27 | 显示全部楼层
def palindrome(string):  
    length = len(string)
    last = length-1   
    length //= 2         #length等于length除以2,相当于把字符串对折
    flag = 1 #标志变量
    for each in range(length):   
        if string[each] != string[last]:  #如果字符串中索引为each的字符不等于索引为last的字符,就是判断是否对称
            flag = 0                      #就是拿第一个和最后一个相比,然后拿第二个和倒数第二个相比...
        last -= 1                         #要是有一对不相等,flag就等于0
    if flag == 1:
        return 1  
    else:
        return 0  

string = input('请输入一句话:')
if palindrome(string) == 1: #调用函数,看返回的是1还是0
    print('是回文联!')
else:
    print('不是回文联!')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-1 16:14:44 | 显示全部楼层    本楼为最佳答案   
def palindrome(string): #定义函数,传入字符串
    length = len(string) #取字符串长度
    last = length-1  #最后一位下标
    length //= 2  #地板除2,相当于字符串折中
    flag = 1      #标记
    for each in range(length):  #遍历字符串每个元素
        if string[each] != string[last]:
            flag = 0 #首尾不同时,标记改变
        last -= 1 #尾部前移(同时还有for循环决定的头部后移)

    if flag == 1:  #返回标记
        return 1 #1为是回文串,0不是
    else:
        return 0

string = input('请输入一句话:')
if palindrome(string) == 1:
    print('是回文联!')
else:
    print('不是回文联!')
理解了记得给个最佳
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-1 16:24:25 | 显示全部楼层
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 #不相等则flag为0
        last -= 1

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

string = input('请输入一句话:')
if palindrome(string) == 1:
    print('是回文联!')
else:
    print('不是回文联!')

就是用取字符串字数除以2商的整数部分把字符串从中间分为两半,用for循环依次比较两端字符是否相等,如果相等则返回flag为1,反之则返回flag为0,最后判断返回为1则是回文联,否则不是。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-18 20:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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