那位大人 发表于 2020-9-26 22:27:19

零基础学习python19讲课后题动动手第0题

根据小甲鱼老师的第二种判断是否为回联的方法,可以用list(string)或者tuple(string)得出正确判断,但为什么不能用str(string)呢

liuzhengyuan 发表于 2020-9-26 22:28:33

发详细代码

那位大人 发表于 2020-9-26 22:34:55

def palindrome(string):
    list1 = str(string)
    list2 = reversed(list1)
    if list1 == str(list2):
      return '是回文联!'
    else:
      return '不是回文联!'
print(palindrome('上海自来水来自海上'))

那位大人 发表于 2020-9-26 22:35:34

小甲鱼老师那里用的是list()

城中城 发表于 2020-9-26 22:43:03

因为字符串使用reversed
就变成列表了
你在str(列表)也变不回去

城中城 发表于 2020-9-26 22:43:37

def federation():
    if couplet == couplet[::-1]:
      print("是回文联")
    else:
      print("不是回文联")

couplet = input("请输入一句话:")
federation()

sunrise085 发表于 2020-9-26 22:44:02

本帖最后由 sunrise085 于 2020-9-26 22:45 编辑

那位大人 发表于 2020-9-26 22:35
小甲鱼老师那里用的是list()

因为reversed函数得到的返回值是一个可迭代对象,用list或tuple能够直接转为列表或元组,
但是str没有这个功能,无法将可迭代对象转为字符串,所以在if的条件这里str(list2)并不是原字符串反转的结果,你可以尝试打印一下str(list2)

那位大人 发表于 2020-9-26 22:52:57

sunrise085 发表于 2020-9-26 22:44
因为reversed函数得到的返回值是一个可迭代对象,用list或tuple能够直接转为列表或元组,
但是str没有 ...

谢谢大佬{:5_109:}

疾风怪盗 发表于 2020-9-26 22:53:47

不用list,直接用str也可以
def palindrome(string):
    for i in range(len(string)//2):
      if string==string[::-1]:
            return '是回文联!'
      else:
            return '不是回文联!'

print(palindrome('上海自来水来自海上'))

那位大人 发表于 2020-9-26 22:55:47

疾风怪盗 发表于 2020-9-26 22:53
不用list,直接用str也可以

好的,谢谢{:5_109:}
页: [1]
查看完整版本: 零基础学习python19讲课后题动动手第0题