鱼C论坛

 找回密码
 立即注册
查看: 1382|回复: 13

[已解决]我又来问问题了,问题来自课后作业

[复制链接]
发表于 2020-7-17 10:34:45 | 显示全部楼层 |阅读模式

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

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

x
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('不是回文联')


上面是程序,但是我运行的时候好像跳不出循环最后存储出错,求帮忙看一下,这题是:
编写一个函数,判断传入的字符串参数是否为“回文联”(回文联即用回文形式写成的对联,既可顺读,也可倒读。例如:上海自来水来自海上)
还是我编写的有问题
最佳答案
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('不是回文联')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-7-17 10:36:41 | 显示全部楼层
对了,你们是怎么复制代码上去的,我都没看见有选项,我看其他回答贴里都有一行行代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

新手专区版规:如何发代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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('不是回文联')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-17 10:50:21 | 显示全部楼层
 p = list(poetry).pop()
你的想法是每次移出列表最后一位...
But...骚年...你太天真了...
list(poetry)会一直取你输入的内容作为列表内容,也就是每次循环你其实都在移出同一个元素...
你可以在这行下面加个print(p)验证下。

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

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

微信图片_20200717104910.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-17 10:57:23 | 显示全部楼层
def hw(s):
        for x in range(len(s)):
                if s[x] != s[-(x+1)] :
                        return '不是回文'
        return '是回文'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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

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

使用道具 举报

 楼主| 发表于 2020-7-17 10:59:39 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

孺子不可教也= =.................................................................................................

你等会吧...一会我空点的时候,按你思路写完得了- -
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-17 11:03:20 | 显示全部楼层
对不起我是学术垃圾
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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('不是回文联')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-17 11:13:15 | 显示全部楼层
xiangya 发表于 2020-7-17 11:04
i = 1
while i:
    poetry = input('请输入要检测的回文联')

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

使用道具 举报

发表于 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('不是回文联')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-17 11:17:08 | 显示全部楼层
yhhpf 发表于 2020-7-17 11:13
你看下吧- -...基础的东西多学点。

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-19 23:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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