nettkd 发表于 2021-12-27 14:24:32

回联文函数

def huilian(string):
    list1 = list(string)
    list2=[]
    for i in string:
      list2 = list2.append(list1.pop())
    if list1 == list2:
      print('是回联文')
    else:
      print('不是回联文')

N = input('请输入一句话:')
huilian(N)
请问各位大神, 我这问题出哪了?

冬雪雪冬 发表于 2021-12-27 14:49:13

list2 = list2.append(list1.pop())
改为
list2.append(list1.pop())

nettkd 发表于 2021-12-27 15:25:05

冬雪雪冬 发表于 2021-12-27 14:49
list2 = list2.append(list1.pop())
改为
list2.append(list1.pop())

感谢您的回复,确实是通过了,不过我输入“上海自来水来自海上”,结果却是“不是回联文”,请帮忙再指导一下

冬雪雪冬 发表于 2021-12-27 15:31:54

nettkd 发表于 2021-12-27 15:25
感谢您的回复,确实是通过了,不过我输入“上海自来水来自海上”,结果却是“不是回联文”,请帮忙再指导 ...

因为list1经过多次pop后已经是空的列表了。

nettkd 发表于 2021-12-27 15:37:18

冬雪雪冬 发表于 2021-12-27 15:31
因为list1经过多次pop后已经是空的列表了。

这个问题我想到了,我已经改了,但还是出现那个问题
def huilian(string):
    list1 = list(string)
    list2=[]
    for i in list(string):
      list2.append(list(string).pop())
    if list1 == list2:
      print('是回联文')
    else:
      print('不是回联文')

N = input('请输入一句话:')
huilian(N)
麻烦你看下

nettkd 发表于 2021-12-27 15:38:39

冬雪雪冬 发表于 2021-12-27 15:31
因为list1经过多次pop后已经是空的列表了。

我的思路是复制出一个新列表,对原列表pop()后,出来的list2是否=复制出的新列表

冬雪雪冬 发表于 2021-12-27 15:51:04

nettkd 发表于 2021-12-27 15:37
这个问题我想到了,我已经改了,但还是出现那个问题
def huilian(string):
    list1 = list(string)


list(string).pop()总是弹出最后一个元素,比如输入的是123,则弹出的一直是3

nettkd 发表于 2021-12-28 09:02:15

冬雪雪冬 发表于 2021-12-27 15:51
list(string).pop()总是弹出最后一个元素,比如输入的是123,则弹出的一直是3

额?不应该是321依次返回吗

冬雪雪冬 发表于 2021-12-28 10:11:14

nettkd 发表于 2021-12-28 09:02
额?不应该是321依次返回吗

你增加一个print看看返回的是什么。
安装你的思路改写的,供参考。
def huilian(string):
    list1 = list(string)
    temp = list1[:]
    list2=[]
    for i in list1:
      list2.append(temp.pop())
    if list1 == list2:
      print('是回联文')
    else:
      print('不是回联文')

N = input('请输入一句话:')
huilian(N)

nettkd 发表于 2021-12-28 15:26:21

冬雪雪冬 发表于 2021-12-28 10:11
你增加一个print看看返回的是什么。
安装你的思路改写的,供参考。

确实是的,我忘记了复制可以用[:]了,还是学艺不精啊
页: [1]
查看完整版本: 回联文函数