Loading...

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

MadHatter avatar MadHatter 2 Точки

Odd / Even Position. Задачата по условието от книгата Python.

Решил съм задачата и всички проверки от "Примерен вход и изход" излизат, но въпреки това получавам 80/100. Какво пропускам? 

n = int(input())

sum_even = 0
max_number_even = -100000000000000000
min_number_even = 100000000000000000
str_max_number_even = 'No'
str_min_number_even = 'No'

sum_odd = 0
max_number_odd = -100000000000000000
min_number_odd = 100000000000000000

for number in range(1, n + 1):
    input_number = float(input())
    if number % 2 == 1:
        sum_odd = input_number + sum_odd
        if input_number > max_number_odd:
            max_number_odd = input_number
        if input_number < min_number_odd:
            min_number_odd = input_number
        if n == 1:
            max_number_even = 'No'
            min_number_even = 'No'

    elif number % 2 == 0:
        sum_even = input_number + sum_even
        if input_number > max_number_even:
            max_number_even = input_number
        if input_number < min_number_even:
            min_number_even = input_number

print('OddSum={:,g},'.format(sum_odd))
print('OddMin={:,g},'.format(min_number_odd))
print('OddMax={:,g},'.format(max_number_odd))
print('EvenSum={:,g},'.format(sum_even))
if min_number_even == 'No' and max_number_even == 'No':
    print('EvenMin=No,')
    print('EvenMax=No')
else:
    print('EvenMin={:,g},'.format(min_number_even))
    print('EvenMax={:,g}'.format(max_number_even))
Тагове:
0
Programming Basics
MartinBG avatar MartinBG 4803 Точки

Има два проблема в кода ти:

1. При входни данни "0" (т.е. празна редица) изкарваш грешни oddmin, oddmax, evenmin и evenmax, защото ги инициализираш предварително с някаква числова стойност

2. Използваш неправилно форматиране при извеждането на 4+-цифрени числа- напр. 3918.3 го извеждаш като 3 918.3

Това е оправеният ти код:

sum_even = 0
max_number_even = 'No'
min_number_even = 'No'

sum_odd = 0
max_number_odd = 'No'
min_number_odd = 'No'

n = int(input())
for number in range(1, n + 1):
    input_number = float(input())
    if number % 2 == 0:
        sum_even = input_number + sum_even
        if max_number_even == 'No' or input_number > max_number_even:
            max_number_even = input_number
        if min_number_even == 'No' or input_number < min_number_even:
            min_number_even = input_number
    else:
        sum_odd = input_number + sum_odd
        if max_number_odd == 'No' or input_number > max_number_odd:
            max_number_odd = input_number
        if min_number_odd == 'No' or input_number < min_number_odd:
            min_number_odd = input_number

print('OddSum={:,g},'.format(sum_odd))
if min_number_odd == 'No':
    print('OddMin={:},'.format(min_number_odd))
    print('OddMax={:},'.format(max_number_odd))
else:
    print('OddMin={:g},'.format(min_number_odd))
    print('OddMax={:g},'.format(max_number_odd))
    
print('EvenSum={:g},'.format(sum_even))
if min_number_even == 'No':
    print('EvenMin={:},'.format(min_number_even))
    print('EvenMax={:}'.format(max_number_even))
else:
    print('EvenMin={:g},'.format(min_number_even))
    print('EvenMax={:g}'.format(max_number_even))

 

0
23/04/2020 22:13:45
MadHatter avatar MadHatter 2 Точки

Кода работи без проблем и с отрицателни числа, друг е явно проблема.

Освен това  в Python: -3  % 2 = 1, не на – 1. 

Oт друга страна  -3  % -2 = -1

0
MartinBG avatar MartinBG 4803 Точки

@MadHatter

Това е особеност на Python, с която не бях запознат :)

Редактирах си отговора с конкретните пропуски в решението ти.

0
MadHatter avatar MadHatter 2 Точки

Благодаря. Проблема се оказа във форматиране при извеждането, което в примерите за проверка към задачата не се проявява, но с по големи числа наистина има проблем, въобще нямаше да го открия. За празните редове се справих и го накарах да работи и с числовите стойности. Благодаря за отделеното време и внимание.

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