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 639 Точки
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 639 Точки

Здравей,

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

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

Здравей,

Порових се в твоята задача, в кода има бая "правописни" грешки като го копнах, пробвах да ги оправя, но пак излизаше нещо.

Като решение, твоето, много прилича на моето:

import sys

n = int(input())
even_sum = 0
even_max = - sys.maxsize - 1
even_min = sys.maxsize

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

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

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

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

 

Само че при теб финала ми е малко каша...след като се излезе от цикъла. И не можах да схвана логиката на принтовете за да ги поправя... Затова взех твоята "горна" част (натъкмих я малко, понеже аз импортвам целият "сис") и прибавих моите принтове.

Работи на 100%

 

import sys

n = int(input())
odd_sum = 0
odd_min = sys.maxsize
odd_max = -sys.maxsize
even_sum = 0
even_min = sys.maxsize
even_max = -sys.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

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

print(f"EvenSum={even_sum:.2f},")
if even_min == sys.maxsize:
    print(f"EvenMin=No,")
    print(f"EvenMax=No")
else:
    print(f"EvenMin={even_min:.2f},")
    print(f"EvenMax={even_max:.2f}")
0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.