Професионална програма
Loading...
+ Нов въпрос
andrey_bg avatar andrey_bg 4 Точки

Odd/Even positions

Здравейте, ще съм много благодарен ако някой успее да ми каже защо... получавам 90/100 точки на тази задача като я практикувам от книгата на основи на Python- гърми на последен опит-ако някой знае и зададените числа и отговора моля да ми каже...от седмици се ядосвам че не мога на нея да направя само 100/100 а днес я пробвах и иначе и....100/100 при нормалните упражнения....Логиката е същата- само форматирането е малко по-различно-в зависимост от това което се иска на двете места. 

Кодът от това за книга в програмирането:

from sys import maxsize

n = int(input())
odd_sum = 0
odd_min = maxsize
odd_max = -maxsize
even_sum = 0
even_min = maxsize
even_max = -maxsize

for i in range(0, n):
    current_number= float(input())
    if i % 2 == 1:
        even_sum += current_number
        if current_number < even_min:
            even_min = current_number
        if current_number > even_max:
            even_max = current_number
    else:
        odd_sum += current_number
        if current_number < odd_min:
            odd_min = current_number
        if current_number > odd_max:
            odd_max = current_number

if n > 0:
    print(f'OddSum={odd_sum:,g},')

    if odd_min == maxsize:
        print(f'OddMin=No,')
    else:
        print(f'OddMin={odd_min:,g},')
    if odd_max == -maxsize:
        print(f'OddMax=No,')
    else:
        print(f'OddMax={odd_max:,g},')

    print(f'EvenSum={even_sum:,g},')

    if even_min == maxsize:
        print(f'EvenMin=No,')
    else:
        print(f'EvenMin={even_min:,g},')

    if even_max == -maxsize:
        print(f'EvenMax=No')
    else:
        print(f'EvenMax={even_max:,g}')
elif n==0:
    print(f"""OddSum=0,
    OddMin=No,
    OddMax=No,
    EvenSum=0,
    EvenMin=No,
    EvenMax=No""")
else:
    print(f'OddSum={odd_sum:,g},')
    print(f'OddMin={odd_min},')
    print(f'OddMax={odd_max},')
    print(f'EvenSum={even_sum:},')
    print(f'EvenMin={even_min:},')
    print(f'EvenMax={even_max}')

 

Код от практиката/което от вдругиден ще бъде competition/:

from sys import maxsize

n = int(input())
odd_sum = 0
odd_min = maxsize
odd_max = -maxsize
even_sum = 0
even_min = maxsize
even_max = -maxsize

for i in range(0, n):
    current_number= float(input())
    if i % 2 == 1:
        even_sum += current_number
        if current_number < even_min:
            even_min = current_number
        if current_number > even_max:
            even_max = current_number
    else:
        odd_sum += current_number
        if current_number < odd_min:
            odd_min = current_number
        if current_number > odd_max:
            odd_max = current_number

if n > 0:
    print(f'OddSum={odd_sum:.2f},')

    if odd_min == maxsize:
        print(f'OddMin=No,')
    else:
        print(f'OddMin={odd_min:.2f},')
    if odd_max == -maxsize:
        print(f'OddMax=No,')
    else:
        print(f'OddMax={odd_max:.2f},')

    print(f'EvenSum={even_sum:.2f},')

    if even_min == maxsize:
        print(f'EvenMin=No,')
    else:
        print(f'EvenMin={even_min:.2f},')

    if even_max == -maxsize:
        print(f'EvenMax=No')
    else:
        print(f'EvenMax={even_max:.2f}')
elif n==0:
    print(f"""OddSum=0.00,
OddMin=No,
OddMax=No,
EvenSum=0.00,
EvenMin=No,
EvenMax=No""")
else:
    print(f'OddSum={odd_sum:,g},')
    print(f'OddMin={odd_min},')
    print(f'OddMax={odd_max},')
    print(f'EvenSum={even_sum:},')
    print(f'EvenMin={even_min:},')
    print(f'EvenMax={even_max}')

 

Тагове:
0
mark79 avatar mark79 634 Точки
Best Answer

Здравей,

искам само да ти обърна внимание, че в условието на задачата пише (броим от 1), а ти стартираш цикъла от 0. Това ще ти промени необходимостта от проверки в края на кода. А, за книгата -> и форматирането там - незнам как са нещата.

Поздрави :)

0
andrey_bg avatar andrey_bg 4 Точки

И от 1 и от 0 съм броил-както сам каза променям логиката само-100/100 имам на задачата, но се чудя защо ми гърми на книгата на последния опит...просто качих последно каквото опитах ако не е от 1

1
12/10/2019 09:26:57
mark79 avatar mark79 634 Точки

Здравей,

ето ти един код като за книгата, идеята е във форматирането. Не претендирам, че съм го решил оптимално, но поне е някакво решение

import sys

def get_number_type(number):
    if int(number) == float(number):
        number = int(number)
    else:
        number = float(number)
    return number

n = int(input())

even_sum = 0
even_min = sys.maxsize
even_max = -sys.maxsize

odd_sum = 0
odd_min = sys.maxsize
odd_max = -sys.maxsize

for i in range(1, n + 1):
    current_number = float(input())
    if i % 2 == 0:
        even_sum += current_number
        if current_number > even_max:
            even_max = current_number
        if current_number < even_min:
            even_min = current_number
    else:
        odd_sum += current_number
        if current_number > odd_max:
            odd_max = current_number
        if current_number < odd_min:
            odd_min = current_number

print(f"OddSum={get_number_type(odd_sum)},")
if odd_min != sys.maxsize:
    print(f"OddMin={get_number_type(odd_min)},")
else:
    print(f"OddMin=No,")
if odd_max != -sys.maxsize:
    print(f"OddMax={get_number_type(odd_max)},")
else:
    print("OddMax=No,")

print(f"EvenSum={get_number_type(even_sum)},")
if even_min != sys.maxsize:
    print(f"EvenMin={get_number_type(even_min)},")
else:
    print(f"EvenMin=No,")
if even_max != -sys.maxsize:
    print(f"EvenMax={get_number_type(even_max)}")
else:
    print("EvenMax=No")

Поздрави :)

0
andrey_bg avatar andrey_bg 4 Точки

мерси, не се бях сетил с една функция да го направя :)

0