ZoeLee 发表于 2017-2-23 22:39:10

第17讲课后回文联代码问题

def huiwen(string) :
    list1=list(string)
    list2=list1.reversed()
    if list1 == list2 :
      print('这是回文联')
    else :
      print('这不是')
huiwen('上海自来水来自海上')

为什么判断不是回文联啊

~风介~ 发表于 2017-2-24 09:53:34

判断逻辑不对~{:10_277:}

sd小舅子 发表于 2017-2-24 19:15:28

def huiwen(s):
        list1 = list(s)
        list2 = list1
        list2.reverse()
        if list1 == list2:
                print('是回文')
        else:
                print('不是回文')

lubcat 发表于 2017-2-24 19:59:52

list1=list(string)
    list2=list1.reversed()

list1 本身这时已经改变了,只不过把改变后的赋值给了list2
可以改成list1 = list(string)[:]

ZoeLee 发表于 2017-2-25 15:27:54

~风介~ 发表于 2017-2-24 09:53
判断逻辑不对~

list2=list1.reversed()是不是这句不行啊?
不是把list1反转后赋值给list2的意思吗?

编程新血 发表于 2017-2-25 19:41:03

本帖最后由 编程新血 于 2017-2-25 20:18 编辑

程序中应该注意:

列表与列表切片的区别。通过指令将列表1=列表2,相当于列表1与列表2关联,
即2个列表名指向同一个列表数据,改变一个列表的数据,另一个也会改变。
如果只想创建2个相同的列表应该用切片,即list2=list1[:]
----------------
这里用函数reversed()

def huiwen(s):
      list1 = list(s)
      if list1 ==list(reversed(list1)):
                print('是回文')
      else:
                print('不是回文')
huiwen('s123333s')



--------------
.reverse()方法是将列表翻转,list1.reverse()的效果是,将list1内容翻转。
而list2=list1.reverse(),此时list2是None,它不是个列表。

页: [1]
查看完整版本: 第17讲课后回文联代码问题