• 入门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
    • 2

    样例输出 #1

    8
    15 20 32 40 67 89 300 400
    
    • 1
    • 2

    提示

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    刚接触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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

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

  • 相关阅读:
    windows mysql安装卸载,多版本mysql方案
    安卓恶意应用识别(三)(批量反编译与属性值提取)
    jinfo_动态调整JVM参数(无需重启)(实践)
    开源医疗大模型Llama3-Aloe-8B-Alpha,性能超越 MedAlpaca 和 PMC-LLaMA
    10【DCL数据库控制语言】
    runc hang 导致 Kubernetes 节点 NotReady
    C++中STL库
    Spring 如何使用JDK动态代理呢?
    Unity --- 选项与下拉框的使用
    Abnova丨DNA 标记高质量控制测试方案
  • 原文地址:https://blog.csdn.net/KLSZM/article/details/132988407