尿尿地方不可以 发表于 2020-4-12 17:27:27

判断回文联的问题

def duilian(string):
    duilian1 = []
    for each in string:
      duilian1.append(each)
    if duilian1 == duilian1.reverse():
      print('回文联')
    else:
      print('非回文联')

string = input('输入一句话:')
duilian(string)


我的思路是判断输入的内容如果倒过来与之前一致就是回文联,因为只有list可以进行.reverse(),所以我先把输入的每个字符串都放到一个list中去,然后倒过来判断

尿尿地方不可以 发表于 2020-4-12 17:28:29

但是我发现程序无法判断,永远都会判断是“非回文联”,所以我在试代码的过程中发现是if duilian1 == duilian1.reverse(): 这里出错了

尿尿地方不可以 发表于 2020-4-12 17:30:33

于是我单独试了一下list与list.reverse()的判断发现无论list中是什么 list == list.reverse()都会报false

尿尿地方不可以 发表于 2020-4-12 17:31:45

比如list1 = , 那list1.reverse()就等于, 但是如果输入list1 = list1.reverse() 结果就会显示false

尿尿地方不可以 发表于 2020-4-12 17:32:35

这里为什么不等于true啊,求个大佬讲解一下

wuqramy 发表于 2020-4-12 17:33:02

reverse()没有返回值,这么写:
def duilian(string):
    duilian1 = []
    duilian2 = []
    for each in string:
      duilian1.append(each)
      duilian2.append(each)
    duilian2.reverse()
    if duilian1 == duilian2:
      print('回文联')
    else:
      print('非回文联')

string = input('输入一句话:')
duilian(string)

倒戈卸甲 发表于 2020-4-12 17:40:12

楼上正解,reverse()仅对列表进行一个逆序的操作。如果是其他语言你的程序会报错。但python中语法正确,只是由于list.reverse()=null,比较结果永远是false,达不成你的预期

尿尿地方不可以 发表于 2020-4-12 18:11:12

wuqramy 发表于 2020-4-12 17:33
reverse()没有返回值,这么写:

谢谢大佬指点

尿尿地方不可以 发表于 2020-4-12 18:12:12

倒戈卸甲 发表于 2020-4-12 17:40
楼上正解,reverse()仅对列表进行一个逆序的操作。如果是其他语言你的程序会报错。但python中语法正确,只 ...

谢谢大佬
页: [1]
查看完整版本: 判断回文联的问题