鱼C论坛

 找回密码
 立即注册
查看: 3443|回复: 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] 满足以上两个条件,则将它们一并删除

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

  2. list = []
  3. for i in strr:
  4.     if list[-1].lower()==i and list[-1] != i:
  5.         list.pop()
  6.     elif i ==list[-1].upper() and i != list[-1]:
  7.         list.pop()
  8.     else:
  9.         list.append(i)
  10. for i in list:
  11.     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的意义)
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

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

使用道具 举报

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

使用道具 举报

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

你可以自己测试一下,当list是一个空列表的时候(list = [] )   用bool(list) 返回值是False
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

        试试这个代码
  1. strr = input('input a string : ') . strip()
  2. s , i = '' , 1
  3. while i < len(strr):
  4.     if strr[i - 1] . swapcase() == strr[i]:
  5.         i += 1
  6.     else:
  7.         s += strr[i - 1] if i < len(strr) - 1 else strr[i - 1:]
  8.     i += 1
  9. print(s)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

哦哦,原来and是干这个的
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

感谢提醒,要去复习一下列表了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

一目了然,谢谢大佬
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-26 08:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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