鱼C论坛

 找回密码
 立即注册
查看: 1677|回复: 10

[已解决]python课后习题求助

[复制链接]
发表于 2020-3-17 21:49:28 | 显示全部楼层 |阅读模式

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

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

x
编写一个函数,判断传入的字符串参数是否为“回文联”(回文联即用回文形式写成的对联,既可顺读,也可倒读。例如:上海自来水来自海上)
def palindrome(string):
    list1 = list(string)
    list2 = reversed(list1)
    print(list(list2))  #为什么加了这句打印之后,结果就是返回 '不是回文联!'???
    if list1 == list(list2):
        return '是回文联!'
    else:
        return '不是回文联!'
print(palindrome('上海自来水来自海上'))
最佳答案
2020-3-17 21:55:51
因为reversed得到的是迭代器,它只能一次使用,print(list(list2))后就已经为空了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-17 21:55:50 | 显示全部楼层
本帖最后由 qiuyouzhi 于 2020-3-17 21:57 编辑

reversed没有返回值。。。
你得这样写:
list2 = list1[:]
list2.reverse()
def palindrome(string):
    list1 = list(string)
    list2 = list1[:]
    list2.reverse()
    print(list(list2))  #为什么加了这句打印之后,结果就是返回 '不是回文联!'???
    if list1 == list(list2):
        return '是回文联!'
    else:
        return '不是回文联!'
print(palindrome('上海自来水来自海上'))
把代码改成这样试试,我这里没有问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-17 21:55:51 | 显示全部楼层    本楼为最佳答案   
因为reversed得到的是迭代器,它只能一次使用,print(list(list2))后就已经为空了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-17 21:58:51 | 显示全部楼层
>>> list1 = [1,2,3]
>>> list2 = reversed(list1)
>>> list2
<list_reverseiterator object at 0x00000276B027E5E0>
>>> print(list2)
<list_reverseiterator object at 0x00000276B027E5E0>
>>> if not list2 == list1:
        print(list2,list1)

       
<list_reverseiterator object at 0x00000276B027E5E0> [1, 2, 3]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-17 22:03:20 | 显示全部楼层
>>> list1.reverse()
>>> list1
[3, 2, 1]
>>> list2 = list1[:]
>>> list2
[3, 2, 1]
>>>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-17 22:04:29 | 显示全部楼层
list2 = list1[:]属于深拷贝,但在这个代码中可以只是list2 = list1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-17 22:19:23 | 显示全部楼层
改好了
def palindrome(string):
    list1 = list(string)
    list2 = list(reversed(string))
    if list1 == list2:
        return '是回文联!'
    else:
        return '不是回文联!'
print(palindrome('上海自来水来自海上'))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-18 17:13:52 | 显示全部楼层
qiuyouzhi 发表于 2020-3-17 21:55
reversed没有返回值。。。
你得这样写:

不是这个问题呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-18 17:14:42 | 显示全部楼层
zltzlt 发表于 2020-3-18 17:13
不是这个问题呀

可是我把这个改过来就没有问题了鸭
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-18 17:15:05 | 显示全部楼层
qiuyouzhi 发表于 2020-3-18 17:14
可是我把这个改过来就没有问题了鸭

你没看清楚楼主的问题吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-18 17:16:41 | 显示全部楼层
zltzlt 发表于 2020-3-18 17:15
你没看清楚楼主的问题吧


好吧
我眼残
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-25 01:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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