鱼C论坛

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

[已解决]python判断输入的是否为回连文

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

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

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

x
小甲鱼19讲里面的课后作业,我的代码报错了,但是不知道错在哪里,鱼油们帮忙看一下把
  1. def huiwen(list1):
  2.     result = 1
  3.     for i in range(0,len(list1)/2):
  4.         if list1[i] != list1[len(list1) - i]:
  5.             result = 0
  6.     return result
  7. str1 = input("请输入一个文本,判断它是否为回连文")
  8. list2 = list(str1)
  9. if huiwen(list2):
  10.     print("是回连文")
  11. else:
  12.     print("不是回连文")
复制代码

报错的内容如下
最佳答案
2020-6-16 17:58:51
小甲鱼的铁粉 发表于 2020-6-16 17:54
懒惰成就聪明优秀的程序员


错误两个地方,第一个:
range 是生成一个可迭代的一个整数列表,而Python 除法返回的是 浮点数,不能用 len / 2 来当range 的参数
第二个len是列表长度 开始时候 i = 0 而 len - 0 还是 列表长度,超出了索引范围所以报错:

正确代码:
  1. def huiwen(list1):
  2.     result = 1
  3.     for i in range(0,len(list1)//2):
  4.         if list1[i] != list1[len(list1) -1- i]:
  5.             return 0
  6.     return result
  7. str1 = input("请输入一个文本,判断它是否为回连文")
  8. list2 = list(str1)
  9. if huiwen(list2):
  10.     print("是回连文")
  11. else:
  12.     print("不是回连文")
复制代码


){R(24JE@$Q[(NF[IKN3~HA.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-6-16 17:50:39 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-6-16 17:52:28 | 显示全部楼层


哈哈 先给你看看 其实这样就好,然后我去看你代码

  1. def huiwen(list1):
  2.     if list1 == list1[::-1]:
  3.         print("是回连文")
  4.     else:
  5.         print("不是回连文")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-16 17:53:21 | 显示全部楼层
这个是标准答案

  1. ##方法一:

  2. def huiwen(string):

  3.     length = len(string)

  4.     last = length - 1

  5.     length //= 2

  6.     flag = 1

  7.     for each in range(length):

  8.         if string[each] != string[last]:

  9.             flag = 0

  10.         last -= 1



  11.     if flag == 1:

  12.         return 1

  13.     else:

  14.         return 0



  15. string = input('请输入一句话:')

  16. if huiwen(string) == 1:

  17.     print('是回文联')

  18. else:

  19.     print('不是回文联')



  20. ##方法二:

  21. def huiwen(string):

  22.     list1 = list(string)

  23.     list2 = reversed(list1)

  24.     if list1 == list(list2):

  25.         return '是'

  26.     else:

  27.         return '不是'

  28. print(huiwen('上海自来水来自海上'))

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

使用道具 举报

 楼主| 发表于 2020-6-16 17:54:50 | 显示全部楼层
Twilight6 发表于 2020-6-16 17:52
哈哈 先给你看看 其实这样就好,然后我去看你代码

懒惰成就聪明优秀的程序员
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-16 17:54:59 | 显示全部楼层
把/2改成//2
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-6-16 17:58:51 | 显示全部楼层    本楼为最佳答案   
小甲鱼的铁粉 发表于 2020-6-16 17:54
懒惰成就聪明优秀的程序员


错误两个地方,第一个:
range 是生成一个可迭代的一个整数列表,而Python 除法返回的是 浮点数,不能用 len / 2 来当range 的参数
第二个len是列表长度 开始时候 i = 0 而 len - 0 还是 列表长度,超出了索引范围所以报错:

正确代码:
  1. def huiwen(list1):
  2.     result = 1
  3.     for i in range(0,len(list1)//2):
  4.         if list1[i] != list1[len(list1) -1- i]:
  5.             return 0
  6.     return result
  7. str1 = input("请输入一个文本,判断它是否为回连文")
  8. list2 = list(str1)
  9. if huiwen(list2):
  10.     print("是回连文")
  11. else:
  12.     print("不是回连文")
复制代码


小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-6-16 17:59:49 | 显示全部楼层
Twilight6 发表于 2020-6-16 17:58
错误两个地方,第一个:
range 是生成一个可迭代的一个整数列表,而Python 除法返回的是 浮点数,不能 ...

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

使用道具 举报

 楼主| 发表于 2020-6-16 18:00:24 | 显示全部楼层

对,float,谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-16 18:06:00 | 显示全部楼层
Twilight6 发表于 2020-6-16 17:58
错误两个地方,第一个:
range 是生成一个可迭代的一个整数列表,而Python 除法返回的是 浮点数,不能 ...
  1. ##方法二:

  2. def huiwen(string):

  3.     list1 = list(string)

  4.     list2 = reversed(list1)

  5.    [quote] if list1 == list(list2): if list1 == list(list2):[/quote]

  6.         return '是'

  7.     else:

  8.         return '不是'

  9. print(huiwen('上海自来水来自海上'))
复制代码

这个代码
if list1 == list(list2):

为什么这个list2还需要用list函数格式转化一下呢?
在它之前的这个代码:
list2 = reversed(list1)
没有将它转化为列表吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-16 18:08:03 | 显示全部楼层
小甲鱼的铁粉 发表于 2020-6-16 18:06
这个代码
为什么这个list2还需要用list函数格式转化一下呢?
在它之前的这个代码:没有将它转化为列 ...

因为 list2 = reversed(list1) 返回的是一个反向迭代器,而不是列表  重新转为列表才是一个列表
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-6-16 18:08:50 | 显示全部楼层
Twilight6 发表于 2020-6-16 18:08
因为 list2 = reversed(list1) 返回的是一个反向迭代器,而不是列表  重新转为列表才是一个列表

明白了,python的细节好多
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-16 18:15:55 | 显示全部楼层
小甲鱼的铁粉 发表于 2020-6-16 18:08
明白了,python的细节好多

还好啦 哈哈 其他语言更头疼
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-22 00:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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