地狱拖拉机 发表于 2020-7-17 10:34:45

我又来问问题了,问题来自课后作业

poetry = input('请输入要检测的回文联')
list(poetry)
z = list(poetry)
i = 1
t = list()
while i:
    p = list(poetry).pop()
    t += p
    if list(poetry) == ():
      i = 0
      break
if list(w) == z:
    print('是回文联!')
else:
    print('不是回文联')


上面是程序,但是我运行的时候好像跳不出循环最后存储出错,求帮忙看一下,这题是:
编写一个函数,判断传入的字符串参数是否为“回文联”(回文联即用回文形式写成的对联,既可顺读,也可倒读。例如:上海自来水来自海上)
还是我编写的有问题{:5_104:}

地狱拖拉机 发表于 2020-7-17 10:36:41

对了,你们是怎么复制代码上去的,我都没看见有选项,我看其他回答贴里都有一行行代码

heidern0612 发表于 2020-7-17 10:40:19

地狱拖拉机 发表于 2020-7-17 10:36
对了,你们是怎么复制代码上去的,我都没看见有选项,我看其他回答贴里都有一行行代码

新手专区版规:如何发代码

地狱拖拉机 发表于 2020-7-17 10:44:45

poetry = input('请输入要检测的回文联')
list(poetry)
z = list(poetry)
i = 1
t = list()
while i:
    p = list(poetry).pop()
    t += p
    if list(poetry) == ():
      i = 0
      break
if list(w) == z:
    print('是回文联!')
else:
    print('不是回文联')

yhhpf 发表于 2020-7-17 10:50:21

p = list(poetry).pop()
你的想法是每次移出列表最后一位...
But...骚年...你太天真了...
list(poetry)会一直取你输入的内容作为列表内容,也就是每次循环你其实都在移出同一个元素...
你可以在这行下面加个print(p)验证下。

如果你想达到你的目的,可以先给list(poetry)赋值,比如list1 = list(poetry),这样就会使list1确定下来,再使用list1.pop()方法时才会减少对应元素。

代码黏贴参考如下:(高级模式或者发帖时也有<>这个符号的图表,效果一样)

gufengaoyue 发表于 2020-7-17 10:57:23

def hw(s):
        for x in range(len(s)):
                if s != s[-(x+1)] :
                        return '不是回文'
        return '是回文'

地狱拖拉机 发表于 2020-7-17 10:58:49

yhhpf 发表于 2020-7-17 10:50
你的想法是每次移出列表最后一位...
But...骚年...你太天真了...
list(poetry)会一直取你输入的内容作 ...

poetry = input('请输入要检测的回文联')
list(poetry)
z = list(poetry)
i = 1
t = list()
list1 = list(poetry)
while i:
    p = list1.pop()
    t += p
    if list1 == ():
      i = 0
      break
if t == z:
    print('是回文联!')
else:
    print('不是回文联')



我改了,运行的时候它说:
Traceback (most recent call last):
File "C:/Users/86156/Desktop/解忧杂货店/python/game.py/会文联.py", line 8, in <module>
    p = list1.pop()
IndexError: pop from empty list

{:5_104:}

地狱拖拉机 发表于 2020-7-17 10:59:39

{:10_254:}{:10_254:}{:10_254:}{:10_254:}{:10_254:}{:10_254:}{:10_254:}{:10_266:}{:10_266:}{:10_266:}

yhhpf 发表于 2020-7-17 11:00:58

地狱拖拉机 发表于 2020-7-17 10:58
我改了,运行的时候它说:
Traceback (most recent call last):
File "C:/Users/86156/Deskto ...

孺子不可教也= =.................................................................................................{:10_245:}

你等会吧...一会我空点的时候,按你思路写完得了- -

地狱拖拉机 发表于 2020-7-17 11:03:20

对不起我是学术垃圾{:10_266:}

xiangya 发表于 2020-7-17 11:04:28

i = 1
while i:
    poetry = input('请输入要检测的回文联')
    list(poetry)
    z = list(poetry)
    p = list(poetry)
    p.reverse()
    print(p)
    if list(poetry) == ():
      i = 0
    elif p == z:
      print('是回文联!')
    else:
      print('不是回文联')
{:5_109:}

地狱拖拉机 发表于 2020-7-17 11:13:15

xiangya 发表于 2020-7-17 11:04
i = 1
while i:
    poetry = input('请输入要检测的回文联')


{:10_266:}

yhhpf 发表于 2020-7-17 11:13:43

地狱拖拉机 发表于 2020-7-17 11:03
对不起我是学术垃圾

你看下吧- -...基础的东西多学点。

poetry = input('请输入要检测的回文联')
z = list(poetry)
i = 1
t = list()
while i:
    p = z.pop()#此处不能使用p=list(poetry),否则p一直会被赋值为list(poetry);
    t += p
    if z == []:#此处不是(),列表是[]啊,老哥!!!!!!!!!!!!!!!
      i = 0
      break

if list(t) == list(poetry): #此处不能用z来做比较,你前面循环刚吧z列表pop()空了呀,你还拿他比。。。
    print('是回文联!')
else:
    print('不是回文联')

地狱拖拉机 发表于 2020-7-17 11:17:08

yhhpf 发表于 2020-7-17 11:13
你看下吧- -...基础的东西多学点。

谢谢{:10_254:}
页: [1]
查看完整版本: 我又来问问题了,问题来自课后作业