目录
题目描述
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了 N 个 1 到 1000 之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。
输入描述
第 1 行为 1 个正整数,表示所生成的随机数的个数:N。
第 2 行有 N 个用空格隔开的正整数,为所产生的随机数。
输出描述
输出 2 行,第 1 行为 1 个正整数 M,表示不相同的随机数的个数。
第 2 行为 M 个用空格隔开的正整数,为从小到大排好序的不相同的随机数。
输入输出样例
示例 1
输入
10
20 40 32 67 40 20 89 300 400 15
输出
8
15 20 32 40 67 89 300 40
python中的end
关键字end可以用于将结果输出到同一行,或者在输出的末尾添加不同的字符。
包含end=''作为print()BIF的一个参数,会使该函数关闭“在输出中自动包含换行”的默认行为。
其原理是:为end传递一个空字符串,这样print函数不会在字符串末尾添加一个换行符,而是添加一个空字符串。
参考代码:
import os
import sys
n=int(input()) #输入随机数的个数
lst=[] #创建空列表
lst=list(map(int,input().split())) #input() 接收多个用户输入需要与split()结合使用
s=set(lst) #set()创建一个无序不重复元素集s
lst1=list(s) #将这个元素集存放在list1中
lst1.sort() #排序
print(len(lst1)) #len()计算列表中元素的个数
for i in range(len(lst1)):
print(lst1[i],end=' ') #end=''将结果输出到同一行,取消换行
思路:
1、题目要求:产生随机数,去掉重复数字,只保留一个,从小到大排序
2、先输入随机数的个数,然后输入产生的随机数,用一个空的列表来存放,随机数可以用set()函数来去掉重复数字,然后将列表中的元素用sort()函数从小到大排序,用len()计算列表中元素个数,并输出,再用for循环输出结果,用end='',取消换行