代码小白liu 发表于 2021-2-15 22:23:03

python 课后答案求助

def palindrome(string):
    length = len(string)
last = length-1
   length //= 2
    flag = 1
    for each in range(length):
      if string != string:
            flag = 0
      last -= 1

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

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

这块代码的中间核心部分能不能帮忙注释下,分享一下解题思路

jackz007 发表于 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 != string:    # 字符串首尾对应字符进行比较,如果不相等
            flag = 0                        # 置 flag = 0,前面一开始的假设在这里被推翻
      last -= 1                           # 字符串尾部指针向字符串开头的方向步进一个字符,准备进行下一对字符的比较

    if flag == 1:                           # 如果循环结束 flag 还是 1,那就是说,字符串所有的首尾字符对确实相等
      return 1                            # string 真的就是回文联
    else:                                 # 否则,flag = 0
      return 0                            # 既然鸡蛋中被挑出了骨头,那么,string 自然就不是回文联

atai0622 发表于 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("不是回文联")
页: [1]
查看完整版本: python 课后答案求助