Софтуерно Инженерство
Loading...
+ Нов въпрос
vena1 avatar vena1 0 Точки

03. Odd / Even Position

Здравейте,
Решавам задачата по различни начини, но само този ми дава максимум 70/100.
Дали някой може да помогне?
Благодаря!
 
import sys
count_num = 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 num_pos in range(1, count_num+1):
    current_number = float(input())
    if num_pos % 2 != 0:
        odd_sum += current_number
        if current_number < odd_min:
            odd_min = current_number
        if current_number > odd_max:
            odd_max = current_number
        else:
            odd_min = odd_min
            odd_max = odd_max
    if num_pos % 2 == 0:
        even_sum += current_number
        if current_number < even_min:
            even_min = current_number
        if current_number > even_max:
            even_max = current_number
        else:
            even_min = even_min
            even_max = even_max

print(f"OddSum={odd_sum:.2f},")
print(f"OddMin={odd_min:.2f},")
print(f"OddMax={odd_max:.2f},")

print(f"EvenSum={even_sum:.2f},")
print(f"EvenMin={even_min:.2f},")
print(f"EvenMax={even_max:.2f}")
Тагове:
0
mark79 avatar mark79 629 Точки

Здравей,

може да поглеждаш нулевите тестове, те ще ти помогнат какво евентуално пропускаш. В случая е достатъчно да разиграеш варианта когато няма да ти подадат нито едно число.

Трябва да промениш изхода по някакъв начин. Ето пример:

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

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

Поздрави :)

PS -> Може да помислиш дали тези редове въобще имат някаква стойност и дали са необходими!?

            odd_min = odd_min
            odd_max = odd_max

            even_min = even_min
            even_max = even_max

 

0
08/03/2020 12:50:10
vena1 avatar vena1 0 Точки

Да, тези редове въобще не ми вършат работа. Проблема ми е, че не се принтира No, когато няма максимална и минимална стойност. Винаги ми излизат първоначално зададените стойности за макс и мин и заедно с тях и принта на No. Така не се бях сетила за такава логика, така, че благодаря за помощта!

0
ValentinBarutchiev avatar ValentinBarutchiev 0 Точки

Здравейте. Аз също се мъча с odd/evenposition.

Честно казано въобще незагрявам как да си форматирам принта.

Варианта на Mark79  е много ясен за мен с изключение на едно нещо а именно:

защо при следната проверка се принтира резулат а не No ?

Защо се бъркам. Според мен би следвало е да е обратното!

if  odd_min != sys.maxsize:

според мен тук printa e No - което очевидно е невярното, а не

print(f'Odd_min = {odd_min:.2f}')

 

 

0
grishko0o avatar grishko0o 34 Точки

@ValentinBarutchiev 

if even_min != sys.maxsize:    # първоначално even_min = sys.maxsize и ако не е влязло/няма такава стойност , за да я промени да не е maxsize, не е имало even_min . Това прави и проверката - even_min различно ли е от първоначалната си стойност ("!=" различно от), ако да :

    print(f"EvenMin={even_min:.2f},")

в противен случай е равно на първоначалната, тоест не е имало even_min :

else:
    print(f"EvenMin=No,") 

Надявам се е било от помощ.

0
27/03/2020 01:08:34