鱼C论坛

 找回密码
 立即注册
查看: 3183|回复: 8

Python19讲课后习题判断回文联问题,自己编写的找不出问题所在,求帮忙~

[复制链接]
发表于 2014-5-10 11:08:42 | 显示全部楼层 |阅读模式
10鱼币
def HWL(Str):
    Str1 = list(Str)
    length = len(Str1)
    temp = Str1
    Str2 = []

    for each in range(length):
        Str2.append(Str1.pop())

    if Str2 == temp:
        print('这是回文联')
    else:
        print('这不是回文联')

程序运行后如下:
>>> HWL('上海自来水来自海上')
这不是回文联

错哪了呢?

最佳答案

查看完整内容

#在进行两个列表的复制时要注意temp = Str1 和 temp = Str1[:] 的不同。前者不开辟新的内存空间只是单纯的起了叫temp的别名而已都指向Str1的内存区域。呵呵!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-5-10 11:08:43 | 显示全部楼层
本帖最后由 swsm 于 2014-5-10 14:41 编辑


  1. def HWL(Str):
  2.     Str1 = list(Str)
  3.     length = len(Str1)
  4.     temp = Str1[:]    #原来这里是temp = Str1
  5.     Str2 = []

  6.     for each in range(length):
  7.         Str2.append(Str1.pop())
  8.     print(Str2)         #这是用来检测Str2的数据
  9.     print(temp)         #这是用来检测temp的数据
  10.     if Str2 == temp:
  11.         print('这是回文联')
  12.     else:
  13.         print('这不是回文联')
复制代码
#在进行两个列表的复制时要注意temp = Str1  和    temp = Str1[:]  的不同。前者不开辟新的内存空间只是单纯的起了叫temp的别名而已都指向Str1的内存区域。呵呵!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-5-10 14:37:34 | 显示全部楼层


  1. def HWL(Str):
  2.     Str1 = list(Str)
  3.     length = len(Str1)
  4.     temp = Str1[:]    #原来这里是temp = Str1
  5.     Str2 = []

  6.     for each in range(length):
  7.         Str2.append(Str1.pop())
  8.     print(Str2)         #这是用来检测Str2的数据
  9.     print(temp)         #这是用来检测temp的数据
  10.     if Str2 == temp:
  11.         print('这是回文联')
  12.     else:
  13.         print('这不是回文联')
复制代码
#在进行两个列表的复制时要注意temp = Str1  和    temp = Str1[:]  的不同。。呵呵!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-5-10 14:43:28 | 显示全部楼层
问题在这:


def HWL(Str):
    Str1 = list(Str)
    length = len(Str1)
    temp = Str1             ======>这里应该用 temp = list (Str1.copy( ))
    Str2 = []

原因是  你把Str1的列表赋给temp后,temp 和 Str1 指向的还是同一个列表,用pop把元素给了Str2之后,实际上 temp 和 Str1 都变空列表了。用.copy()可以避免这个情况。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-5-10 14:46:16 | 显示全部楼层
本帖最后由 宁录 于 2014-5-10 14:47 编辑

2楼的更简洁~:big学习了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-5-10 14:57:25 | 显示全部楼层

咦,请教一下这个代码列表怎么弄出来的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-5-10 15:04:40 | 显示全部楼层
本帖最后由 swsm 于 2014-5-10 15:06 编辑
宁录 发表于 2014-5-10 14:57
咦,请教一下这个代码列表怎么弄出来的?

复制代码
【code】【/code】  包起来就可以了!呵呵!注意前面的【】是英文输入下的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-5-10 16:37:01 | 显示全部楼层
swsm 发表于 2014-5-10 14:37
#在进行两个列表的复制时要注意temp = Str1  和    temp = Str1[:]  的不同。。呵呵!

犀利犀利,谢谢~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-5-10 16:45:10 | 显示全部楼层
swsm 发表于 2014-5-10 15:04
用【code】【/code】  包起来就可以了!呵呵!注意前面的【】是英文输入下的

:big谢谢指教~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-28 22:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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