Loading...
KrisBozdev7 avatar KrisBozdev7 1 Точки

Problem 3 - Numbers, Python Mid Exam

Write a program to read a sequence of integers and find and print the top 5 numbers greater than the average value in the sequence, sorted in descending order.

Input

  • Read from the console a single line holding space-separated integers.

Output

  • Print the above-described numbers on a single line, space-separated.

  • If less than 5 numbers hold the property mentioned above, print less than 5 numbers.

  • Print "No" if no numbers hold the above property.

Constraints

  • All input numbers are integers in the range [-1 000 000 … 1 000 000].

  • The count of numbers is in the range [1…10 000].

Examples

Input

Output

Comments

10 20 30 40 50

50 40

Average number = 30.

Numbers greater than 30 are: {40, 50}.

The top 5 numbers among them in descending order are: {50, 40}.

Note that we have only 2 numbers, so all of them are included in the top 5.

5 2 3 4 -10 30 40 50 20 50 60 60 51

60 60 51 50 50

Average number = 28.08.

Numbers greater than 28.08 are:
{30, 40, 50, 50, 60, 60, 51}.

The top 5 numbers among them in descending order are: {60, 60, 51, 50, 50}.

1

No

Average number = 1.

There are no numbers greater than 1.

-1 -2 -3 -4 -5 -6

-1 -2 -3

Average number = -3.5.

Numbers greater than -3.5 are: {-1, -2, -3}.

The top 5 numbers among them in descending order are: {-1, -2, -3}.

 

моят код: https://pastebin.com/UfVAjr52

В judge системата дава 90 точки от възможни 100. Дали правилно съм направил логиката -  if len(numbers)>=5

или трябва да я променя? Защото имаме резултат след като сме извършили действието за сумиране на средно аритметично число и намираме топ 5 числа в нисходящ ред.

 

Благодаря предварително!

 

Тагове:
0
Python Fundamentals
emoen4ev avatar emoen4ev 1 Точки

Привет KrisBozdev7,

само при празен списък за изход печатаме 'No'.

Ти му казваш да връща 'No', ако броя на входните ти елементи е по-малък от 5. Там е недоразумението.

 

  1. def top_5(numbers):

  2.     avg = sum(numbers)/len(numbers)

  3.     if len(numbers)>=5:

  4.         temp_sum = [x for x in sorted(numbers, reverse=True) if x > avg]

  5.         return ' '.join(map(str, temp_sum[:5]))

  6.     else:

  7.         return 'No'

  8.  

  9. numbers = list(map(int, input().split()))

  10. print(top_5(numbers))

 

Позволих си лека корекция на твоя код, с която той вече минава успешно 100/100:

def top_5(data):
    avg = sum(data) / len(data)

    temp_sum = [x for x in sorted(data, reverse=True) if x > avg]

    if len(temp_sum) != 0:
        return ' '.join(map(str, temp_sum[:5]))
    else:
        return 'No'


numbers = list(map(int, input().split()))
print(top_5(numbers))

 

 

0
20/03/2022 16:05:34
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.