Fórum PiR2
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Questão de Python

2 participantes

Ir para baixo

Questão de Python Empty Questão de Python

Mensagem por AlvaroSTK Seg 11 Jun 2018, 09:57

O Salto em distância é uma modalidade olímpica de atletismo, onde os atletas combinam velocidade, força e
agilidade para saltarem o mais longe possível a partir de um ponto pré-determinado. Existe desde os Jogos
Olímpicos da Antiguidade e, na Era Moderna, é disputado desde a primeira edição em Atenas 1896, para homens,
e desde Londres 1948, para mulheres. A maioria das competições disputadas é composta de seis saltos, sendo
que algumas delas, que tem marcas mais baixas, constam de apenas três saltos por atleta.
A Federação Sergipana de Atletismo decidiu promover um torneio de Salto em Distância onde cada atleta poderia
realizar três saltos. Para efeito de classificação será considerada a média aritmética dos dois melhores
saltos.
Considerando as informações acima, faça um programa em Python com os seguintes recursos:
a) Permitir a leitura da quantidade de atletas inscritos;
b) Permitir ao operador informar o nome do atleta e a distância obtida em cada um dos seus 3 saltos; (0,2)
c) Ao final da digitação, o programa deve imprimir (em ordem crescente da média aritmética dos dois
melhores saltos) a lista dos atletas inscritos, a distância de cada salto e a respectiva média do atleta; (0,6)
(Veja o exemplo a seguir)
d) A média da competição (considerando o critério de classificação, ou seja, a média dos dois melhores
saltos de cada atleta); (0,2)
e) Use uma função calcula_media(x,y,z) que retorna a média aritmética dos dois maiores valores de um
grupo de três. (1,0)


Exemplo: (foram informados valores inteiros para facilitar a conferência dos cálculos)
Competidores ordenados pela média dos melhores saltos:
Nome S1 S2 S3 Med
Pedro 2.0 5.0 3.0 4.0
Maria 4.0 3.0 5.0 4.5
Jose 5.0 6.0 8.0 7.0
Bruno 5.0 4.0 9.0 7.0
Saulo 9.0 6.0 8.0 8.5

Consegui fazer a letra A e B, porem não sei como fazer a C D e a E.

AlvaroSTK
iniciante

Mensagens : 42
Data de inscrição : 25/02/2014
Idade : 22
Localização : S

Ir para o topo Ir para baixo

Questão de Python Empty Re: Questão de Python

Mensagem por Baltuilhe Seg 24 Ago 2020, 14:47

Questão antiga.
Mas vi só hoje Smile
Código:
class Atleta(object):
    def __init__(self, nome, dist_saltos):
        self.nome = nome
        self.dist_saltos = dist_saltos
    
    def media_saltos(self):
        return self.media(self.dist_saltos)
    
    def media_dois_melhores_saltos(self):
        dois_melhores = sorted(self.dist_saltos)[1:]
        return self.media(dois_melhores)
    
    def __str__(self):
        saltos = '\t'.join(['{:.1f}'.format(dist) for dist in self.dist_saltos])
        return '{}\t{}\t{:.1f}'.format(self.nome, saltos, self.media_dois_melhores_saltos())
    
    def __repr__(self):
        return 'Atleta {}'.format(self.nome)
    
    def __eq__(self, atleta):
        return self.media_dois_melhores_saltos() == atleta.media_dois_melhores_saltos()
    
    def __lt__(self, atleta):
        return self.media_dois_melhores_saltos() < atleta.media_dois_melhores_saltos()
    
    @staticmethod
    def media(lista):
        return sum(lista)/len(lista)
    
def main():    
    n = int(input())
    
    atletas = {}
    for _ in range(n):
        nome, *dist = input().split()
        for i in range(len(dist)):
            dist[i] = float(dist[i])
        atletas[nome] = Atleta(nome, dist)
    
    print('Nome\tS1\tS2\tS3\tMed')
    for atleta in sorted(atletas.values()):
        print('{}'.format(atleta))
    
if __name__ == '__main__':
    main()
    

____________________________________________
"Nós somos o que fazemos repetidamente. Excelência, então, não é um modo de agir, é um hábito." Aristóteles
Baltuilhe
Baltuilhe
Fera
Fera

Mensagens : 637
Data de inscrição : 23/12/2015
Idade : 45
Localização : Campo Grande, MS, Brasil

Ir para o topo Ir para baixo

Ir para o topo


 
Permissão neste fórum:
Você não pode responder aos tópicos