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

7. Easter Gifts

Здравейте, имам проблем с задача 07.Easter Gifts от Exercise-a на List Basics. Всичко ми изглежда наред, само че последните 3 теста гърмят.

Условието на задачата е:

https://softuni.bg/downloads/svn/soft-tech/May-2020/Python/03-Lists-Basic/03-Lists-Basics-Exercise.docx

 

Моето решение:

https://pastebin.com/DGc821nz

0
Fundamentals Module
niyazihasan avatar niyazihasan 81 Точки
Best Answer

Здравей колега,

след 14 тия ти ред сложи проверката if len(gifts) > index >= 0: и трябва да минават тестовете

0
KALOYAN_123 avatar KALOYAN_123 34 Точки

Здравей колега, направих промените, но последните тестове пак гърмят.

Моят код:

https://pastebin.com/DGc821nz

0
niyazihasan avatar niyazihasan 81 Точки

Размени местата на проверката и index:

index = int(command[2])

 if len(gifts) > index >= 0:

0
MartinBG avatar MartinBG 3853 Точки

Както колегата @niyazihasan е отбелязал, имахте проблем с индексацията.

Не е удачно да се разчита на интерпретатора да хвърли ексепшън, вместо да се валидират входните данни. smiley

 

Оправеното решение:

gifts = input().split(' ')

command = input().split(' ')
while command[0] != 'No' and command[1] != 'Money':
    index = 0
    if command[0] == 'OutOfStock':
        gift = command[1]
        gifts = list(map(lambda lst: lst.replace(gift, "None"), gifts))

    elif command[0] == 'Required':
        index = int(command[2])
        if 0 < index < len(gifts):
            gifts[index] = command[1]

    elif command[0] == 'JustInCase':
        gifts[-1] = command[1]

    command = input().split(' ')

while 'None' in gifts:
    gifts.remove('None')

for i in gifts:
    print(i, end=' ')
0
KALOYAN_123 avatar KALOYAN_123 34 Точки

Благодаря Ви колеги, за помощта. Разбрах къде греша.

2
D.V.Ivanov avatar D.V.Ivanov 2 Точки
gifts = input().split()
command = input()

while not command == "No Money":
    command = command.split()
    if "OutOfStock" in command:
        for i in range(len(gifts)):
            if command[1] in gifts[i]:
                gifts[i] = "None"
    elif "Required" in command:
        for i in range(len(gifts)):
            if i == int(command[2]):
                gifts[i] = command[1]
    elif "JustInCase" in command:
        gifts[-1] = command[1]
    command = input()
while "None" in gifts:
    gifts.remove("None")
for i in gifts:
    print(i, end=" ")
0