小甲鱼的铁粉 发表于 2020-6-16 17:49:55

python判断输入的是否为回连文

小甲鱼19讲里面的课后作业,我的代码报错了,但是不知道错在哪里,鱼油们帮忙看一下把
def huiwen(list1):
    result = 1
    for i in range(0,len(list1)/2):
      if list1 != list1:
            result = 0
    return result
str1 = input("请输入一个文本,判断它是否为回连文")
list2 = list(str1)
if huiwen(list2):
    print("是回连文")
else:
    print("不是回连文")
报错的内容如下

小甲鱼的铁粉 发表于 2020-6-16 17:50:39

{:10_243:}

Twilight6 发表于 2020-6-16 17:52:28



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

def huiwen(list1):
    if list1 == list1[::-1]:
      print("是回连文")
    else:
      print("不是回连文")

小甲鱼的铁粉 发表于 2020-6-16 17:53:21

这个是标准答案
##方法一:

def huiwen(string):

    length = len(string)

    last = length - 1

    length //= 2

    flag = 1

    for each in range(length):

      if string != string:

            flag = 0

      last -= 1



    if flag == 1:

      return 1

    else:

      return 0



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

if huiwen(string) == 1:

    print('是回文联')

else:

    print('不是回文联')



##方法二:

def huiwen(string):

    list1 = list(string)

    list2 = reversed(list1)

    if list1 == list(list2):

      return '是'

    else:

      return '不是'

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

---------------------

小甲鱼的铁粉 发表于 2020-6-16 17:54:50

Twilight6 发表于 2020-6-16 17:52
哈哈 先给你看看 其实这样就好,然后我去看你代码

懒惰成就聪明优秀的程序员{:10_256:}

qiuyouzhi 发表于 2020-6-16 17:54:59

把/2改成//2

Twilight6 发表于 2020-6-16 17:58:51

小甲鱼的铁粉 发表于 2020-6-16 17:54
懒惰成就聪明优秀的程序员


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

正确代码:
def huiwen(list1):
    result = 1
    for i in range(0,len(list1)//2):
      if list1 != list1:
            return 0
    return result
str1 = input("请输入一个文本,判断它是否为回连文")
list2 = list(str1)
if huiwen(list2):
    print("是回连文")
else:
    print("不是回连文")

小甲鱼的铁粉 发表于 2020-6-16 17:59:49

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

{:10_275:}

小甲鱼的铁粉 发表于 2020-6-16 18:00:24

qiuyouzhi 发表于 2020-6-16 17:54
把/2改成//2

对,float,谢谢{:10_275:}

小甲鱼的铁粉 发表于 2020-6-16 18:06:00

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

##方法二:

def huiwen(string):

    list1 = list(string)

    list2 = reversed(list1)

    if list1 == list(list2): if list1 == list(list2):

      return '是'

    else:

      return '不是'

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

这个代码 if list1 == list(list2):
为什么这个list2还需要用list函数格式转化一下呢?
在它之前的这个代码: list2 = reversed(list1)没有将它转化为列表吗?

Twilight6 发表于 2020-6-16 18:08:03

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

因为 list2 = reversed(list1) 返回的是一个反向迭代器,而不是列表重新转为列表才是一个列表

小甲鱼的铁粉 发表于 2020-6-16 18:08:50

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

{:10_332:}明白了,python的细节好多

Twilight6 发表于 2020-6-16 18:15:55

小甲鱼的铁粉 发表于 2020-6-16 18:08
明白了,python的细节好多

还好啦 哈哈 其他语言更头疼
页: [1]
查看完整版本: python判断输入的是否为回连文