鱼C论坛

 找回密码
 立即注册
查看: 3330|回复: 13

[已解决]【日常提问】回文联判断程序

[复制链接]
发表于 2018-11-23 10:36:13 | 显示全部楼层 |阅读模式

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

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

x
小甲鱼老师的函数部分第二课 课后题要求设计一个程序判断是否为回文联(就是字符串对称 比如 上海自来水来自海上)


我写了这样的

  1. def judge(temp):
  2.     if len(temp)%2 != 0:
  3.         list1 = list(temp)
  4.         list2=[]
  5.         for each in list1:
  6.             list2 == list1.pop()
  7.         if list1 == list2:
  8.             return(print('是回文联!'))
  9.         else:
  10.             return(print('不是回文联!'))
  11.     else:
  12.         return(print('不是回文联!'))

  13. word = input('请输入一句话')
  14. temp = str(word)
  15. judge(temp)
复制代码



思路就是先判断长度一定为奇数才会是回文联
然后把字符串转到列表,再把元素依次提出来形成另一个列表 如果这两个列表相等就是回文联
但好像并没有 list1 == list2 这样的判断方法??? 这里有什么技巧可以判断两个列表相等吗?
(目前还没有看标准答案  想尽量尝试用自己的思路去做)
最佳答案
2018-11-23 18:29:46
本帖最后由 heidern0612 于 2018-11-23 18:32 编辑

我贴个我写的切片代码,抛砖引玉。
  1. temp = input("请输入一句话:")
  2. if temp == temp[::-1]:
  3.     print("是回文联")
  4. else:
  5.     print("不是回文联")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-11-23 11:32:36 | 显示全部楼层
有,但是你这里是不会相等的
而且没有==这种操作
list2 == list1.pop()
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-23 12:55:05 | 显示全部楼层
1、为什么非得长度是奇数才是回文联呢?长度为偶数也是回文联啊?(比如"上海海上"就是个回文联。)

2、为啥要变成两个列表比较,一个字符串跟自己的逆向比较不就行了吗?

例如函数里刚学的reverse函数。或者字符串的切片,索引什么的都可以进行比较。

3、双等是比较,单等是赋值。弄清楚概念哟~所以你list2应该是单等 list1的pop。而不是两者相互比较。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-23 14:42:16 | 显示全部楼层
我也是新手一枚,这是我写的代码,也不知道对不对,仅供参考。有问题请帮我指出,谢谢!
def list():
    list1 = input("请输入一段话")
    list2 = []
    list3 = []
    if len(list1) % 2 != 0 and len(list1) > 1:
        for i in list1:
            list2.insert(0,i)
            list3.append(i)
            # print(list2)
            # print(list3)
        if list2 == list3:
            print("TRUE")
        else:print("FALSE")
    else:print("FALSE")
list()
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-23 18:26:39 | 显示全部楼层
lin1481989286 发表于 2018-11-23 14:42
我也是新手一枚,这是我写的代码,也不知道对不对,仅供参考。有问题请帮我指出,谢谢!
def list():
    ...

你这个很有创意啊!天才~

哈哈 ,第一次见这么玩的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-23 18:29:46 | 显示全部楼层    本楼为最佳答案   
本帖最后由 heidern0612 于 2018-11-23 18:32 编辑

我贴个我写的切片代码,抛砖引玉。
  1. temp = input("请输入一句话:")
  2. if temp == temp[::-1]:
  3.     print("是回文联")
  4. else:
  5.     print("不是回文联")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2018-11-24 10:04:41 | 显示全部楼层
heidern0612 发表于 2018-11-23 18:29
我贴个我写的切片代码,抛砖引玉。

::-1  是什么操作???
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-24 10:07:25 | 显示全部楼层
heidern0612 发表于 2018-11-23 12:55
1、为什么非得长度是奇数才是回文联呢?长度为偶数也是回文联啊?(比如"上海海上"就是个回文联。)

2、 ...

reverse不是对列表的方法么  但是转为列表以后 我这一句话就是一个元素 所以反过来也没啥意义呀
我寻思着把每个字都拆开来
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-24 10:11:38 From FishC Mobile | 显示全部楼层
fayzzz 发表于 2018-11-24 10:04
::-1  是什么操作???

步进为-1,就是倒着走
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-24 10:17:23 | 显示全部楼层
塔利班 发表于 2018-11-23 11:32
有,但是你这里是不会相等的
而且没有==这种操作
list2 == list1.pop()

刚才试验了一下pop 发现这个只能弹到剩最后两个元素?
>>> list1=[1,2,3,4,5]
>>> for i in list1:
        list2=list1.pop()
        print(list1)

[1, 2, 3, 4]
[1, 2, 3]
[1, 2]
所以用这种方法是不是不行。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-24 10:19:18 | 显示全部楼层
lin1481989286 发表于 2018-11-23 14:42
我也是新手一枚,这是我写的代码,也不知道对不对,仅供参考。有问题请帮我指出,谢谢!
def list():
    ...

噢!这个我看懂了  挺厉害的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-24 10:22:33 | 显示全部楼层
heidern0612 发表于 2018-11-24 10:11
步进为-1,就是倒着走

[:] 代表列表里所有元素, 然后[::] 这里面两个引号又代表什么呢
还是说就是[::-1]就是一个独立的指令 要他倒序
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-24 11:17:29 From FishC Mobile | 显示全部楼层
一个冒号代表复制列表,第二个冒号后面跟的是步进数,代表步进。老师视频里都有讲。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-24 11:19:28 From FishC Mobile | 显示全部楼层
本帖最后由 heidern0612 于 2018-11-24 18:41 编辑
fayzzz 发表于 2018-11-24 10:22
[:] 代表列表里所有元素, 然后[::] 这里面两个引号又代表什么呢
还是说就是[::-1]就是一个独立的指令  ...


比如[1,10:2],代表的输出就是1、3、5、7、9
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-23 02:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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