鱼C论坛

 找回密码
 立即注册
查看: 2160|回复: 3

[已解决]判断回联

[复制链接]
发表于 2020-8-11 22:52:48 | 显示全部楼层 |阅读模式
10鱼币
这串代码没错误,是19讲的答案
我把每排都写上注释便于我自己理解,可我还是理解不了
有大神能细讲一下吗?多谢了
def palindrome(string):            # 定义函数
    length = len(string)                      # 计数
    last = length-1                             # 计数减一 并赋值给其他变量
    length //= 2                                 # 地板除法
    flag = 1                                       # 一个新变量,作为条件
    for each in range(length):              # 循环each在lenth中并遍历lenth #差不多就这个意思
        if string[each] != string[last]:     # ???假如值中 [each] 不匹配值中的另一个值 [last] 则往下执行 :
            flag = 0                               # 条件为零
        last -= 1                                  # 计数再减一 ???

    if flag == 1:                                 # 如果 flag 等于 1 则执行 (需上一条for循环不能成立)
        return 1                                   # 返回 1 
    else:                                            # 否则执行 
        return 0                                   # 返回 0 

string = input('请输入一句话:')         # 给函数一个值
if palindrome(string) == 1:                #如果条件符合则继续执行
    print('是回文联!')                          # 打印结果
else:                                               #否则执行
    print('不是回文联!')                    #打印结果
最佳答案
2020-8-11 22:52:49
你这样的注释是在描述程序,对你理解这段程序没有任何帮助
遇到陌生的程序你可以按照下面的步骤尝试分析:
第一步:弄清楚关键变量的含义,从主函数开始由上往下扫一下程序
主函数没有
palindrome函数有三个
length: 记录字符串长度,后面被除了2,就是字符串长度的一半
last:暂时不知道
flag:暂时不知道
第二步:分析每个程序块(if for while等构成的程序块)顺序是由主函数开始从简单到复杂
主函数直接判断子函数返回值是否为1,是的话则是回文联,那接下来看的就是子函数的返回部分
也刚好是子函数最简单的部分
if flag == 1:                                
        return 1                                 
    else:                                          
        return 0
根据这段程序可以明确flag的含义是标志字符串是否为回文联(是1不是0)

然后只剩下一段代码了
for each in range(length):            
        if string[each] != string[last]:  
            flag = 0                             
        last -= 1
每循环一次做了三件事 each递增,if判断,last递减
判断的内容是如果字符串的each位和last位不相等,那么flag设置位0,也就是不是回文联。
这时候last的作用也就明白了,是和each类似的用于从后往前索引字符串其中一位字符的变量



对于这种简单程序还有个方法就是在纸上写一个字符串然后用纸笔模拟一下程序的执行
各部分在做什么就懂了。

最佳答案

查看完整内容

你这样的注释是在描述程序,对你理解这段程序没有任何帮助 遇到陌生的程序你可以按照下面的步骤尝试分析: 第一步:弄清楚关键变量的含义,从主函数开始由上往下扫一下程序 主函数没有 palindrome函数有三个 length: 记录字符串长度,后面被除了2,就是字符串长度的一半 last:暂时不知道 flag:暂时不知道 第二步:分析每个程序块(if for while等构成的程序块)顺序是由主函数开始从简单到复杂 主函数直接判断子函数返 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-11 22:52:49 | 显示全部楼层    本楼为最佳答案   
你这样的注释是在描述程序,对你理解这段程序没有任何帮助
遇到陌生的程序你可以按照下面的步骤尝试分析:
第一步:弄清楚关键变量的含义,从主函数开始由上往下扫一下程序
主函数没有
palindrome函数有三个
length: 记录字符串长度,后面被除了2,就是字符串长度的一半
last:暂时不知道
flag:暂时不知道
第二步:分析每个程序块(if for while等构成的程序块)顺序是由主函数开始从简单到复杂
主函数直接判断子函数返回值是否为1,是的话则是回文联,那接下来看的就是子函数的返回部分
也刚好是子函数最简单的部分
if flag == 1:                                
        return 1                                 
    else:                                          
        return 0
根据这段程序可以明确flag的含义是标志字符串是否为回文联(是1不是0)

然后只剩下一段代码了
for each in range(length):            
        if string[each] != string[last]:  
            flag = 0                             
        last -= 1
每循环一次做了三件事 each递增,if判断,last递减
判断的内容是如果字符串的each位和last位不相等,那么flag设置位0,也就是不是回文联。
这时候last的作用也就明白了,是和each类似的用于从后往前索引字符串其中一位字符的变量



对于这种简单程序还有个方法就是在纸上写一个字符串然后用纸笔模拟一下程序的执行
各部分在做什么就懂了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-8-11 22:54:51 | 显示全部楼层
怎么排版会成这样。。。。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-8-11 23:17:23 | 显示全部楼层
SHRS23 发表于 2020-8-11 22:52
你这样的注释是在描述程序,对你理解这段程序没有任何帮助
遇到陌生的程序你可以按照下面的步骤尝试分析: ...

老哥,给力
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-11 08:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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