7-8 不按常理出牌的列表 - 实验4 装番茄和啤酒的容器 - 《Python编程基础及应用实验教程》(高等教育出版社)

7-8 不按常理出牌的列表 - 实验4 装番茄和啤酒的容器 - 《Python编程基础及应用实验教程》(高等教育出版社)

分数 10

全屏浏览

切换布局

作者 海洋饼干叔叔

单位 重庆大学

下述程序从键盘读入多个以逗号分隔的元素并将其组织在一个列表中,然后遍历列表删除其中重复的元素。具体地,假设列表中存在k个值为a的元素,删除前k-1个元素,保留最后一个,不同元素在列表中的相对位置不应被改变

v = list(eval(input()))
print("before:",v)

for x in v:
    cnt = v.count(x)
    if cnt >= 2:
        for i in range(cnt-1):
            v.remove(x)

print("after:",v)

上述程序的运行结果为(第一行为测试输入):

4, 3, 2, 3, 2, 4, True
before: [4, 3, 2, 3, 2, 4, True]
after: [3, 3, 2, 4, True]

对照上述执行结果的第2行及第3行,显然程序的执行结果不符合设定目标。原列表中的3保留了两个!
 

【错误分析】

程序在遍历循环(第4行)的内部执行了移除列表元素的操作(第8行)。一边遍历列表一边修改列表甚至删除列表元素可能使得遍历发生混乱,产生意料之外的结果。

 

请修改上述程序,使其可以正常工作。

输入格式:

由逗号分隔的多个值

输出格式:

参考输出样例,注意不同元素在列表中的相对位置不应被改变

输入样例:

4, 3, 2, 3, 2, 4, True

输出样例:

before: [4, 3, 2, 3, 2, 4, True]
after: [3, 2, 4, True]

答案:

li= list(eval(input()))
print("before:", li)
unique_elements = []
for x in li[::-1]:
    if x not in unique_elements:
        unique_elements.insert(0, x)
print("after:", unique_elements)
#杰小韦,谁用你给的代码啊

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值