鱼C论坛

 找回密码
 立即注册
查看: 1252|回复: 9

[已解决]回联文函数

[复制链接]
发表于 2021-12-27 14:24:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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-28 10:11:14
nettkd 发表于 2021-12-28 09:02
额?不应该是321依次返回吗

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

  11. N = input('请输入一句话:')
  12. huilian(N)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-12-27 14:49:13 | 显示全部楼层
list2 = list2.append(list1.pop())
改为
list2.append(list1.pop())
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-27 15:25:05 | 显示全部楼层
冬雪雪冬 发表于 2021-12-27 14:49
list2 = list2.append(list1.pop())
改为
list2.append(list1.pop())

感谢您的回复,确实是通过了,不过我输入“上海自来水来自海上”,结果却是“不是回联文”,请帮忙再指导一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

因为list1经过多次pop后已经是空的列表了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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)
麻烦你看下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-27 15:38:39 | 显示全部楼层
冬雪雪冬 发表于 2021-12-27 15:31
因为list1经过多次pop后已经是空的列表了。

我的思路是复制出一个新列表,对原列表pop()后,出来的list2是否=复制出的新列表
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

list(string).pop()总是弹出最后一个元素,比如输入的是123,则弹出的一直是3
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-28 09:02:15 | 显示全部楼层
冬雪雪冬 发表于 2021-12-27 15:51
list(string).pop()总是弹出最后一个元素,比如输入的是123,则弹出的一直是3

额?不应该是321依次返回吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-28 10:11:14 | 显示全部楼层    本楼为最佳答案   
nettkd 发表于 2021-12-28 09:02
额?不应该是321依次返回吗

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

  11. N = input('请输入一句话:')
  12. huilian(N)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-28 15:26:21 | 显示全部楼层
冬雪雪冬 发表于 2021-12-28 10:11
你增加一个print看看返回的是什么。
安装你的思路改写的,供参考。

确实是的,我忘记了复制可以用[:]了,还是学艺不精啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 13:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表