鱼C论坛

 找回密码
 立即注册
查看: 2001|回复: 12

[已解决]关于零基础学python第一版的第19讲回文句中的问题

[复制链接]
发表于 2020-3-11 10:16:18 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 yeahwsw 于 2020-3-11 10:22 编辑

题目大致如此:编写一个函数,判断传入的字符串参数是否为“回文联”(回文联即用回文形式写成的对联,既可顺读,也可倒读。例如:上海自来水来自海上)

实在搞不懂,请大神们赐教。

方法一:对称字符进行验证,测试可行,但复杂。
def hui():
        temp=input("请输入一段文字信息:")
        length=len(temp)
        for each in range(length):
                if temp[each]==temp[length-1-each]:
                        if each>length//2:
                                print("%s是回文句" % temp)
                                break
                else:
                        print("%s不是回文句" % temp)
                        break
方法二:将字符串转化为列表1,然后赋值给列表2并将列表2反向排序,比较列表1和列表2是否相同,结果总是显示是回文句
def hui():
        temp=input("请输入一段文字信息:")
        a=list(temp)
        b=a
        b.reverse()
        if a==b:
                print("%s是回文句" % temp)
        else:
                print("%s不是回文句" % temp)

                               
登录/注册后可看大图



将方法二中的b=a更改为b=a[:]就可以了,因为我学到我的地盘我做主这一节,我觉得这两者之间没有区别啊,求大神赐教
最佳答案
2020-3-11 10:22:19
代码改成这个样子:
def hui():
    temp=input("请输入一段文字信息:")
    a=list(temp)
    b = list(temp)
    b.reverse()
    if a==b:
        print("%s是回文句" % temp)
    else:
        print("%s不是回文句" % temp)

hui()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-11 10:22:19 | 显示全部楼层    本楼为最佳答案   
代码改成这个样子:
def hui():
    temp=input("请输入一段文字信息:")
    a=list(temp)
    b = list(temp)
    b.reverse()
    if a==b:
        print("%s是回文句" % temp)
    else:
        print("%s不是回文句" % temp)

hui()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-11 10:23:59 | 显示全部楼层
qiuyouzhi 发表于 2020-3-11 10:22
代码改成这个样子:

我那个方法二为什么会出错呀,大神,能详细解释一下吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-11 10:24:06 | 显示全部楼层
方法2,b = a,则两者的地址相同,reverse后都是取反,可以改为
b = a[:]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-11 10:26:12 | 显示全部楼层
yeahwsw 发表于 2020-3-11 10:23
我那个方法二为什么会出错呀,大神,能详细解释一下吗?

还记得变量就是标签吗?
只要没把标签撕下来,他俩就是一样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-11 10:30:57 | 显示全部楼层
import copy
alist=["魂淡",("a","b"),[98,99]]
blist=alist #直接复制
clist=copy.copy(alist)#浅拷贝
dlist=copy.deepcopy(alist)#深拷贝
#查看列表中元素是否相同
print("查看列表中元素是否相同")
print("alist:%s" % alist)
print("blist:%s" % blist)
print("clist:%s" % clist)
print("dlist:%s" % dlist)

#比较列表
print("比较列表")
print("alist=blist:%s" % alist==blist)
print("alist=clist:%s" % alist==clist)
print("alist=dlist:%s" % alist==dlist)

#判断是否为列表1
print("判断是否为列表1")
print("alist is blist:%s" % alist is blist)
print("alist is clist:%s" % alist is clist)
print("alist is dlist:%s" % alist is dlist)

#查看列表地址
print("查看列表地址")
print("alist地址:%s" % id(alist))
print("blist地址:%s" % id(blist))
print("clist地址:%s" % id(clist))
print("dlist地址:%s" % id(dlist))

#查看列表中一级元素地址
print("查看列表中一级元素地址")
print("alist[0]地址:%s" % id(alist[0]))
print("blist[0]地址:%s" % id(blist[0]))
print("clist[0]地址:%s" % id(clist[0]))
print("dlist[0]地址:%s" % id(dlist[0]))
print("alist[1]地址:%s" % id(alist[1]))
print("blist[1]地址:%s" % id(blist[1]))
print("clist[1]地址:%s" % id(clist[1]))
print("dlist[1]地址:%s" % id(dlist[1]))
print("alist[2]地址:%s" % id(alist[2]))
print("blist[2]地址:%s" % id(blist[2]))
print("clist[2]地址:%s" % id(clist[2]))
print("dlist[2]地址:%s" % id(dlist[2]))
#查看列表中子元素地址
print("查看列表中一级元素地址")
print("alist[1][0]地址:%s" % id(alist[1][0]))
print("blist[1][0]地址:%s" % id(blist[1][0]))
print("clist[1][0]地址:%s" % id(clist[1][0]))
print("dlist[1][0]地址:%s" % id(dlist[1][0]))
print("alist[1][1]地址:%s" % id(alist[1][1]))
print("blist[1][1]地址:%s" % id(blist[1][1]))
print("clist[1][1]地址:%s" % id(clist[1][1]))
print("dlist[1][1]地址:%s" % id(dlist[1][1]))
print("alist[2][0]地址:%s" % id(alist[2][0]))
print("blist[2][0]地址:%s" % id(blist[2][0]))
print("clist[2][0]地址:%s" % id(clist[2][0]))
print("dlist[2][0]地址:%s" % id(dlist[2][0]))
print("alist[2][1]地址:%s" % id(alist[2][1]))
print("blist[2][1]地址:%s" % id(blist[2][1]))
print("clist[2][1]地址:%s" % id(clist[2][1]))
print("dlist[2][1]地址:%s" % id(dlist[2][1]))
#修改列表中一级元素
print("修改列表中一级元素")
alist.append("黑夜")
print("alist:%s" % alist)
print("blist:%s" % blist)
print("clist:%s" % clist)
print("dlist:%s" % dlist)

#修改列表中二级元素
print("修改列表中二级元素")
alist[1]=alist[1]+("c",)
print("alist:%s" % alist)
print("blist:%s" % blist)
print("clist:%s" % clist)
print("dlist:%s" % dlist)
alist[2].append(100)
print("alist:%s" % alist)
print("blist:%s" % blist)
print("clist:%s" % clist)
print("dlist:%s" % dlist)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-11 10:31:32 | 显示全部楼层
本帖最后由 yeahwsw 于 2020-3-11 10:54 编辑

import copy               
alist=["魂淡",("a","b"),[98,99]]               
blist=alist #直接复制               
clist=copy.copy(alist)#浅拷贝               
dlist=copy.deepcopy(alist)#深拷贝               
#查看列表中元素是否相同               
print("查看列表中元素是否相同")                                查看列表中元素是否相同
print("alist:%s" % alist)                                        alist:['魂淡', ('a', 'b'), [98, 99]]
print("blist:%s" % blist)                                        blist:['魂淡', ('a', 'b'), [98, 99]]
print("clist:%s" % clist)                                        clist:['魂淡', ('a', 'b'), [98, 99]]
print("dlist:%s" % dlist)                                        dlist:['魂淡', ('a', 'b'), [98, 99]]
               
#比较列表               
print("比较列表")                                                     比较列表
print("alist=blist:%s" % alist==blist)                        FALSE
print("alist=clist:%s" % alist==clist)                        FALSE
print("alist=dlist:%s" % alist==dlist)                        FALSE
               
#判断是否为列表1               
print("判断是否为列表1")                                        判断是否为列表1
print("alist is blist:%s" % alist is blist)                        FALSE
print("alist is clist:%s" % alist is clist)                        FALSE
print("alist is dlist:%s" % alist is dlist)                        FALSE
               
#查看列表地址               
print("查看列表地址")                                                查看列表地址
print("alist地址:%s" % id(alist))                                alist地址:47281352
print("blist地址:%s" % id(blist))                                blist地址:47281352
print("clist地址:%s" % id(clist))                                clist地址:47281608
print("dlist地址:%s" % id(dlist))                                dlist地址:47281992
               
#查看列表中一级元素地址               
print("查看列表中一级元素地址")                                查看列表中一级元素地址
print("alist[0]地址:%s" % id(alist[0]))                        alist[0]地址:50055280
print("blist[0]地址:%s" % id(blist[0]))                        blist[0]地址:50055280
print("clist[0]地址:%s" % id(clist[0]))                        clist[0]地址:50055280
print("dlist[0]地址:%s" % id(dlist[0]))                        dlist[0]地址:50055280
print("alist[1]地址:%s" % id(alist[1]))                        alist[1]地址:50092424
print("blist[1]地址:%s" % id(blist[1]))                        blist[1]地址:50092424
print("clist[1]地址:%s" % id(clist[1]))                        clist[1]地址:50092424
print("dlist[1]地址:%s" % id(dlist[1]))                        dlist[1]地址:50092424
print("alist[2]地址:%s" % id(alist[2]))                        alist[2]地址:47281096
print("blist[2]地址:%s" % id(blist[2]))                        blist[2]地址:47281096
print("clist[2]地址:%s" % id(clist[2]))                        clist[2]地址:47281096
print("dlist[2]地址:%s" % id(dlist[2]))                        dlist[2]地址:47282120
#查看列表中子元素地址               
print("查看列表中一级元素地址")                                查看列表中一级元素地址
print("alist[1][0]地址:%s" % id(alist[1][0]))                alist[1][0]地址:5347344
print("blist[1][0]地址:%s" % id(blist[1][0]))                blist[1][0]地址:5347344
print("clist[1][0]地址:%s" % id(clist[1][0]))                clist[1][0]地址:5347344
print("dlist[1][0]地址:%s" % id(dlist[1][0]))                dlist[1][0]地址:5347344
print("alist[1][1]地址:%s" % id(alist[1][1]))                alist[1][1]地址:5345664
print("blist[1][1]地址:%s" % id(blist[1][1]))                blist[1][1]地址:5345664
print("clist[1][1]地址:%s" % id(clist[1][1]))                clist[1][1]地址:5345664
print("dlist[1][1]地址:%s" % id(dlist[1][1]))                dlist[1][1]地址:5345664
print("alist[2][0]地址:%s" % id(alist[2][0]))                alist[2][0]地址:8791479578288
print("blist[2][0]地址:%s" % id(blist[2][0]))                blist[2][0]地址:8791479578288
print("clist[2][0]地址:%s" % id(clist[2][0]))                clist[2][0]地址:8791479578288
print("dlist[2][0]地址:%s" % id(dlist[2][0]))                dlist[2][0]地址:8791479578288
print("alist[2][1]地址:%s" % id(alist[2][1]))                alist[2][1]地址:8791479578320
print("blist[2][1]地址:%s" % id(blist[2][1]))                blist[2][1]地址:8791479578320
print("clist[2][1]地址:%s" % id(clist[2][1]))                clist[2][1]地址:8791479578320
print("dlist[2][1]地址:%s" % id(dlist[2][1]))                dlist[2][1]地址:8791479578320
#修改列表中一级元素               
print("修改列表中一级元素")               
alist.append("黑夜")                                                        修改列表中一级元素
print("alist:%s" % alist)                                        alist:['魂淡', ('a', 'b'), [98, 99], '黑夜']
print("blist:%s" % blist)                                        blist:['魂淡', ('a', 'b'), [98, 99], '黑夜']
print("clist:%s" % clist)                                        clist:['魂淡', ('a', 'b'), [98, 99]]
print("dlist:%s" % dlist)                                        dlist:['魂淡', ('a', 'b'), [98, 99]]
               
#修改列表中二级元素               
print("修改列表中二级元素")                                 修改列表中二级元素
alist[1]=alist[1]+("c",)               
print("alist:%s" % alist)                                        alist:['魂淡', ('a', 'b', 'c'), [98, 99], '黑夜']
print("blist:%s" % blist)                                        blist:['魂淡', ('a', 'b', 'c'), [98, 99], '黑夜']
print("clist:%s" % clist)                                        clist:['魂淡', ('a', 'b'), [98, 99]]
print("dlist:%s" % dlist)                                        dlist:['魂淡', ('a', 'b'), [98, 99]]
alist[2].append(100)               
print("alist:%s" % alist)                                        alist:['魂淡', ('a', 'b', 'c'), [98, 99, 100], '黑夜']
print("blist:%s" % blist)                                        blist:['魂淡', ('a', 'b', 'c'), [98, 99, 100], '黑夜']
print("clist:%s" % clist)                                        clist:['魂淡', ('a', 'b'), [98, 99, 100]]
print("dlist:%s" % dlist)                                        dlist:['魂淡', ('a', 'b'), [98, 99]]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-11 10:34:06 | 显示全部楼层
运行结果太多不懂了比说是alist和blist地址一样,元素一样,为什么alist==blist显示False
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-11 10:38:12 | 显示全部楼层
本帖最后由 jackz007 于 2020-3-11 10:41 编辑

        Pythonic 的方法:
s = input("请输入一段文字信息:") . strip()
if len(s):
    if s == s[:: -1]:
        print("【%s】是回文句" % s)
    else:
        print("【%s】不是回文句" % s)
        运行实况:
C:\Bin>python x.py
请输入一段文字信息:上海自来水来自海上
【上海自来水来自海上】是回文句

C:\Bin>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-11 10:58:35 | 显示全部楼层
qiuyouzhi 发表于 2020-3-11 10:22
代码改成这个样子:

谢谢解答
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-11 10:59:10 | 显示全部楼层
冬雪雪冬 发表于 2020-3-11 10:24
方法2,b = a,则两者的地址相同,reverse后都是取反,可以改为
b = a[:]

谢谢解答
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-11 10:59:43 | 显示全部楼层
jackz007 发表于 2020-3-11 10:38
Pythonic 的方法:

        运行实况:

谢谢解答
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-11 11:01:21 | 显示全部楼层

那就设个最佳答案吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 16:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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