MIXDAI 发表于 2020-8-11 22:52:48

判断回联

这串代码没错误,是19讲的答案
我把每排都写上注释便于我自己理解,可我还是理解不了
有大神能细讲一下吗?多谢了{:10_254:} {:10_254:} {:10_254:}

def palindrome(string):            # 定义函数
    length = len(string)                      # 计数
    last = length-1                           # 计数减一 并赋值给其他变量
    length //= 2                                 # 地板除法
    flag = 1                                       # 一个新变量,作为条件
    for each in range(length):            # 循环each在lenth中并遍历lenth #差不多就这个意思
      if string != string:   # ???假如值中 不匹配值中的另一个值 则往下执行 :
            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('不是回文联!')                  #打印结果

SHRS23 发表于 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 != string:
            flag = 0                           
      last -= 1
每循环一次做了三件事 each递增,if判断,last递减
判断的内容是如果字符串的each位和last位不相等,那么flag设置位0,也就是不是回文联。
这时候last的作用也就明白了,是和each类似的用于从后往前索引字符串其中一位字符的变量



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

MIXDAI 发表于 2020-8-11 22:54:51

怎么排版会成这样。。。。。。。{:10_277:}

MIXDAI 发表于 2020-8-11 23:17:23

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

老哥,给力
页: [1]
查看完整版本: 判断回联