如何Python编程输入若干个中间以空格隔开的整数,并从大到小进行排序,并将结果输出(每行输出1个数)?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何Python编程输入若干个中间以空格隔开的整数,并从大到小进行排序,并将结果输出(每行输出1个数)?相关的知识,希望对你有一定的参考价值。

temp = '2 3 11'

temp = temp.split(' ')

temp = [int(v) for v in temp]

temp.sort(reverse=True)

for v in temp:

    print(v)

参考技术A a = input("input data:")
while " "*2 in a:
a = a.replace(" "*2," ")
a = a.split(" ")
a = [int(x) for x in a]
a.sort(reverse = True)
for ii in a:
print(ii1)

PAT 乙级 统计同成绩学生

题目描述

本题要求读入N名学生的成绩,将获得某一给定分数的学生人数输出。

输入描述:

输入在第1行给出不超过10

5

的正整数N,即学生总人数。随后1行给出N名学生的百分制整数成绩,中间以空格分隔。最后1行给出要查询的分
数个数K(不超过N的正整数),随后是K个分数,中间以空格分隔。

输出描述:

在一行中按查询顺序给出得分等于指定分数的学生人数,中间以空格分隔,但行末不得有多余空格。

输入例子:

10
60 75 90 55 75 99 82 90 75 50
3 75 90 88

输出例子:

3 2 0
    scanf("%d", &count);
    int search[count] = {0}, people[count] = {0};

  第一版代码出现编译错误 error: variable-sized object may not be initialized int search[count] = {0}, people[count] = {0}; ”,数组定义时不能用变量作为数组长度,即只能定义定长数组。

 

#include<stdio.h>
#include<stdlib.h>
const int maxn = 100;
int main(){
    int N, count, search;
    int notFirst = 0;
    int grades[maxn] = {0};
    scanf("%d", &N);
    for(int i = 0; i < N; i++){
        scanf("%d", &grades[i]);
    }
    
    scanf("%d", &count);
    while(scanf("%d", &search)){
        int n = 0;
        for(int i = 0; i < sizeof(grades); i++){
            if(search == grades[i]) n++;
        }
        if(notFirst) printf(" ");
        printf("%d", n);
        notFirst++;
    }
    return 0;
}

  第二版代码,很不幸超时了,解题思路不太正确,对于较少的数据量,以上方法还可以有很好的性能。但对于大量的输入成绩,查询每个成绩都要把grades数组遍历一遍,性能太差。

  改进方法:将grades数组改造成长度为100的数组,每个位置分别代表0-100各个分数出现的次数。查询成绩时只需输出对应数字即可,例:78,输出grades[77]。

#include<stdio.h>
const int maxn = 101;

int main(){
    int grades[maxn] = {0};
    int n = 0, times = 0, notFirst = 0;
    scanf("%d", &n);
    for(int i = 0; i < n; i++){
        int grade = 0;
        scanf("%d", &grade);
        grades[grade]++;
    } 
    scanf("%d", &times);
    for(int i = 0; i < times; i++){
        int search = 0;
        scanf("%d", &search);
        if(notFirst) printf(" ");
        printf("%d", grades[search]);
        notFirst++;
    }
    return 0;
}

  成功了!原来想的太复杂了···

以上是关于如何Python编程输入若干个中间以空格隔开的整数,并从大到小进行排序,并将结果输出(每行输出1个数)?的主要内容,如果未能解决你的问题,请参考以下文章

Java中怎么读入一行输入空格隔开的多个数据

C语言编程,求助!

算法笔记_159:算法提高 第二大整数(Java)

格子游戏

Java中怎么读入一行输入空格隔开的多个数据

赛码网算法: 格子游戏