027课后作业
请按照以下规则整理一个给定的字符串一个整理好的字符串中,两个相邻字符 s 和 s,其中 0 <= j <= s.length - 2,要满足如下条件:
若 s 是小写字符,则 s 不可以是相同的大写字符
若 s 是大写字符,则 s 不可以是相同的小写字符
如果 s 和 s 满足以上两个条件,则将它们一并删除
我写出来的如下:
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
没看具体题目,从代码来说存在两个问题:
1. list为关键字不要当做变量名
2. 先要保证list列表不为空(and的意义) list这个列表不能为空,因为 if语句内 有list.pop(),如果不判断直接弹出 list 列表已经为空了就会报错,还有就是楼上说的 list是关键字,最好不要当作变量名{:10_256:} 丶激情小王子 发表于 2022-10-8 15:17
list这个列表不能为空,因为 if语句内 有list.pop(),如果不判断直接弹出 list 列表已经为空了就会报错,还 ...
你可以自己测试一下,当list是一个空列表的时候(list = [] ) 用bool(list) 返回值是False 本帖最后由 jackz007 于 2022-10-8 17:39 编辑
试试这个代码
strr = input('input a string : ') . strip()
s , i = '' , 1
while i < len(strr):
if strr . swapcase() == strr:
i += 1
else:
s += strr if i < len(strr) - 1 else strr
i += 1
print(s) 67193114 发表于 2022-10-8 15:09
没看具体题目,从代码来说存在两个问题:
1. list为关键字不要当做变量名
2. 先要保证list列表不为空( ...
哦哦,原来and是干这个的 丶激情小王子 发表于 2022-10-8 15:17
list这个列表不能为空,因为 if语句内 有list.pop(),如果不判断直接弹出 list 列表已经为空了就会报错,还 ...
感谢提醒,要去复习一下列表了{:10_266:} jackz007 发表于 2022-10-8 17:37
试试这个代码
一目了然,谢谢大佬
页:
[1]