鱼C论坛

 找回密码
 立即注册
查看: 5340|回复: 21

19讲的那个回文联的练习。

[复制链接]
发表于 2014-8-25 10:31:43 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 wei_Y 于 2014-8-25 10:34 编辑
  1. </blockquote></div>
  2. <div class="blockcode"><blockquote>def back():
  3.     temp = input('请输入一段文字:\n')
  4.     columns = list(temp)
  5.     columns1 = list(temp)
  6.     columns1.reverse()
  7.     if columns == columns1:
  8.         return('是回文联')
  9.         back2()
  10.     else:
  11.         return('不是回文联')
  12.         back2()
  13. def back2():
  14.     result = input('谢谢使用,可选择继续或者退出:\n1.继续使用\n2.退出\n')
  15.     result1 = int(result)
  16.     if result1 == 1:
  17.         back()
  18.     else:
  19.         print('再见!')

  20. back()
复制代码



上面是我写的,看了答案发现可以把4,5行的用reversed()变成一句,但是改了之后发现输入12321提示不是回文联。请问咋回事啊。


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-8-25 12:52:21 | 显示全部楼层
你自己怎么写的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-25 13:03:08 | 显示全部楼层
bevin 发表于 2014-8-25 12:52
你自己怎么写的

columns = list(temp)
columns1 = list(temp)
columns1.reverse()
答案上的是把columns1 = list(temp)
columns1.reverse()变成了columns1=reversed(columns)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-25 13:17:41 | 显示全部楼层
我试了一下没问题的
  1. >>> a = [1,2]
  2. >>> a.reverse()
  3. >>> a
  4. [2, 1]
  5. >>> a = [1,2,1]
  6. >>> 123
  7. 123
  8. >>> a = '121'
  9. >>> b = list(a)
  10. >>> c = list(a)
  11. >>> c.reverse()
  12. >>> b == c
  13. True
  14. >>> d = reversed([1,2,3])
  15. >>> d
  16. <listreverseiterator object at 0x0202AE10>
  17. >>> d.next()
  18. 3
  19. >>> d.next()
  20. 2
  21. >>> d.next()
  22. 1
  23. >>> d.next()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-25 13:23:15 | 显示全部楼层
columns1 = columns.reverse()
你也可以这样
  1. def palindrome(string):
  2.     list1 = list(string)
  3.     if list1 == list1[::-1]:
  4.         return '是回文联!'
  5.     else:
  6.         return '不是回文联!'
  7. print(palindrome('上海自来水来自海上'))
  8. print(palindrome('上来水来海自自海上'))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-25 13:33:49 | 显示全部楼层
shuoye 发表于 2014-8-25 13:23
columns1 = columns.reverse()
你也可以这样

360截图20140825133325996.jpg
是不是我这python是坏的- -。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-25 13:35:50 | 显示全部楼层
bevin 发表于 2014-8-25 13:17
我试了一下没问题的

360截图20140825133542162.jpg
是不是我这python坏了。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-25 13:53:36 | 显示全部楼层
本帖最后由 shuoye 于 2014-8-25 13:54 编辑
wei_Y 发表于 2014-8-25 13:33
是不是我这python是坏的- -。

晕我又犯那错误了,
columns1 = reversed(columns)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-25 14:02:37 | 显示全部楼层
shuoye 发表于 2014-8-25 13:53
晕我又犯那错误了,
columns1 = reversed(columns)

360截图20140825133542162.jpg
我刚才也看了半天才反应过来- -。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-25 14:09:41 | 显示全部楼层
本帖最后由 shuoye 于 2014-8-25 14:16 编辑
wei_Y 发表于 2014-8-25 14:02
我刚才也看了半天才反应过来- -。

我看了下,第二个返回了一个栈。所以判断失败我再看看是哪里错了{:9_239:
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-25 14:20:08 | 显示全部楼层
shuoye 发表于 2014-8-25 14:09
我看了下,第二个返回了一个栈。所以判断失败我再看看是哪里错了{:9_239:

只能求助你了,我不知道栈是个啥。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-25 14:25:19 | 显示全部楼层
wei_Y 发表于 2014-8-25 14:20
只能求助你了,我不知道栈是个啥。。

我改成这样了,至于为什么转换失败我也不知道,话说back2怎么看怎么像break
  1. def back():
  2.     temp = input('请输入一段文字:')
  3.     columns = list(temp)
  4.     columns1 = list(reversed(columns))

  5.     if columns == columns1:
  6.         print('yes')
  7.         back2()
  8.     else:
  9.         print('no')
  10.         back2()

  11. def back2():
  12.     result = input('谢谢使用,可选择继续或者退出:\n1.继续使用\n2.退出\n:',)
  13.     if result == '1':
  14.         back()
  15.     else:
  16.         print('再见!')

  17. back()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-25 14:51:15 | 显示全部楼层
return 改为 print,遇到 return 立刻会返回,并不会继续执行 back2()

  1. def back():
  2.     temp = input('请输入一段文字:\n')
  3.     columns = list(temp)
  4.     columns1 = list(temp)
  5.     columns1.reverse()
  6.     if columns == columns1:
  7.         print('是回文联')
  8.         back2()
  9.     else:
  10.         print('不是回文联')
  11.         back2()
  12. def back2():
  13.     result = input('谢谢使用,可选择继续或者退出:\n1.继续使用\n2.退出\n')
  14.     result1 = int(result)
  15.     if result1 == 1:
  16.         back()
  17.     else:
  18.         print('再见!')

  19. back()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-25 15:56:03 | 显示全部楼层
小甲鱼 发表于 2014-8-25 14:51
return 改为 print,遇到 return 立刻会返回,并不会继续执行 back2()

嗯,那个我改了。
小甲鱼老师我想问4,5行那个为什么换成你答案里的不能执行成功。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-25 15:58:26 | 显示全部楼层
shuoye 发表于 2014-8-25 14:25
我改成这样了,至于为什么转换失败我也不知道,话说back2怎么看怎么像break

。难道reversed换的不是个列表- -。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-25 16:23:44 | 显示全部楼层
这个答案吗?

  1. def palindrome(string):
  2.     list1 = list(string)
  3.     list2 = reversed(list1)
  4.     if list1 == list(list2):
  5.         return '是回文联!'
  6.     else:
  7.         return '不是回文联!'
  8. print(palindrome('上海自来水来自海上'))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-25 16:27:55 | 显示全部楼层
wei_Y 发表于 2014-8-25 15:56
嗯,那个我改了。
小甲鱼老师我想问4,5行那个为什么换成你答案里的不能执行成功。。

看清楚哦,我那个代码比较是这么比的:

  1.     if list1 == list(list2):
  2.         return '是回文联!'
  3.     else:
  4.         return '不是回文联!'
复制代码


reversed 转换后并不是一个列表,还要强制把它变成列表才能进行比较。

  1. >>> list1 = list('12345')
  2. >>> list2 = reversed(list1)
  3. >>> list1
  4. ['1', '2', '3', '4', '5']
  5. >>> list2
  6. <list_reverseiterator object at 0x0329FD30>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-25 16:38:57 | 显示全部楼层
小甲鱼 发表于 2014-8-25 16:27
看清楚哦,我那个代码比较是这么比的:

明白了。
谢谢小甲鱼老师。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

匿名鱼油
匿名鱼油  发表于 2015-3-14 19:42:23
挖坟!
回复

使用道具 举报

发表于 2015-3-14 19:51:02 | 显示全部楼层
'%s!' % ('赞' * 32)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-15 12:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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