鱼C论坛

 找回密码
 立即注册
查看: 3009|回复: 7

[已解决]027课后作业

[复制链接]
发表于 2022-10-8 15:09:51 | 显示全部楼层 |阅读模式
5鱼币
请按照以下规则整理一个给定的字符串
一个整理好的字符串中,两个相邻字符 s[j] 和 s[j+1],其中 0 <= j <= s.length - 2,要满足如下条件:
若 s[j] 是小写字符,则 s[j+1] 不可以是相同的大写字符
若 s[j] 是大写字符,则 s[j+1] 不可以是相同的小写字符
如果 s[j] 和 s[j+1] 满足以上两个条件,则将它们一并删除

我写出来的如下:
strr=input('input a string:')

list = []
for i in strr:
    if list[-1].lower()==i and list[-1] != i:
        list.pop()
    elif i ==list[-1].upper() and i != list[-1]:
        list.pop()
    else:
        list.append(i)
for i in list:
    print(i,end='')

报错, list index out of range

与答案对比,发现line 5 和 line 7 应改为 if list and list[-1]==……

求助大神,为什么要加上list and



最佳答案
2022-10-8 15:09:52

没看具体题目,从代码来说存在两个问题:
1. list为关键字不要当做变量名
2. 先要保证list列表不为空(and的意义)

最佳答案

查看完整内容

没看具体题目,从代码来说存在两个问题: 1. list为关键字不要当做变量名 2. 先要保证list列表不为空(and的意义)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-8 15:09:52 | 显示全部楼层    本楼为最佳答案   

没看具体题目,从代码来说存在两个问题:
1. list为关键字不要当做变量名
2. 先要保证list列表不为空(and的意义)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-8 15:17:52 | 显示全部楼层
list这个列表不能为空,因为 if语句内 有list.pop(),如果不判断直接弹出 list 列表已经为空了就会报错,还有就是楼上说的 list是关键字,最好不要当作变量名
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-8 15:18:49 | 显示全部楼层
丶激情小王子 发表于 2022-10-8 15:17
list这个列表不能为空,因为 if语句内 有list.pop(),如果不判断直接弹出 list 列表已经为空了就会报错,还 ...

你可以自己测试一下,当list是一个空列表的时候(list = [] )   用bool(list) 返回值是False
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-8 17:37:39 | 显示全部楼层
本帖最后由 jackz007 于 2022-10-8 17:39 编辑

        试试这个代码
strr = input('input a string : ') . strip()
s , i = '' , 1
while i < len(strr):
    if strr[i - 1] . swapcase() == strr[i]:
        i += 1
    else:
        s += strr[i - 1] if i < len(strr) - 1 else strr[i - 1:]
    i += 1
print(s)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-10-8 19:50:22 | 显示全部楼层
67193114 发表于 2022-10-8 15:09
没看具体题目,从代码来说存在两个问题:
1. list为关键字不要当做变量名
2. 先要保证list列表不为空( ...

哦哦,原来and是干这个的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-10-8 19:51:44 | 显示全部楼层
丶激情小王子 发表于 2022-10-8 15:17
list这个列表不能为空,因为 if语句内 有list.pop(),如果不判断直接弹出 list 列表已经为空了就会报错,还 ...

感谢提醒,要去复习一下列表了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-10-8 19:53:01 | 显示全部楼层

一目了然,谢谢大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-14 09:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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