入门python

[NOIP2006 普及组] 明明的随机数

题目描述

明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了 N N N 1 1 1 1000 1000 1000 之间的随机整数 ( N ≤ 100 ) (N\leq100) (N100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。

输入格式

输入有两行,第 1 1 1 行为 1 1 1 个正整数,表示所生成的随机数的个数 N N N

2 2 2 行有 N N N 个用空格隔开的正整数,为所产生的随机数。

输出格式

输出也是两行,第 1 1 1 行为 1 1 1 个正整数 M M M,表示不相同的随机数的个数。

2 2 2 行为 M M M 个用空格隔开的正整数,为从小到大排好序的不相同的随机数。

样例 #1

样例输入 #1

10
20 40 32 67 40 20 89 300 400 15

样例输出 #1

8
15 20 32 40 67 89 300 400

提示

NOIP 2006 普及组 第一题

n=int(input())
suijishu=input().split()
suijishu=list(set(suijishu))
print(len(suijishu))
suijishu_new=[int(item) for item in suijishu]
suijishu_new.sort()
for item in suijishu_new:
    print(item,end=" ")
    pass

刚接触python,以前都用c写,一开始用for循环遍历再判断,如果列表中的这个元素大于一就移除,但是过不了样例,当输入多个相同数据的时候无法删除干净,不明白怎么回事,错误代码如下

n=int(input())
suijishu=input().split()
for item in suijishu:
    if suijishu.count(item)>1:
        suijishu.remove(item)
        pass
    pass
print(len(suijishu))
suijishu_new=[int(item) for item in suijishu]
suijishu_new.sort()
for item in suijishu_new:
    print(item,end=" ")
    pass

最后想起之前用过的set容器,有自动排序和删除重复元素的功能,搜了下类型强制转换,最后过了,题目就是个简单的查重排序问题,但是对于python的语句很不理解,所以挺吃力的

你可能感兴趣的:(python,算法,数据结构)