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

04. Sum of two numbers - Nested loops - Lab

Здравейте,

 

Може ли малко помощ със следния код:

 

starting_number = int(input())
final_number = int(input())
magic_number = int(input())

combinations = 0
is_found = False

for i in range(starting_number, final_number + 1):
    for j in range(starting_number, final_number + 1):
        combinations += 1

        if i + j == magic_number:
            print(f'Combination N:{combinations} ({i} + {j} = {magic_number})')
            is_found = True
            break

    if is_found:
        break

    print(f'{combinations} combinations - neither equals {magic_number}')

 

При вход 1,10,5 програмата работи, но при вход 23,24,20 получавам два изхода и не мога да разбера къде трябва да бъде последният Print.

 

Поздрави

Тагове:
0
mark79 avatar mark79 635 Точки

Здравей,

може да пробваш така ..

            print(f"Combination N:{combinations} ({i} + {j} = {magic_number})")
            exit()

print(f"{combinations} combinations - neither equals {magic_number}")

Поздрави :)

0
NKKalev avatar NKKalev 12 Точки

Така работи - 100 точки в джъдж, но може ли малко разяснения?

 

Не съм ползвал exit() досега, но ми се струва, че е подобно на break. Тоест, ако не получим "магическото число" програмата извърта двата цикъла, комбинациите се натрупват и ние просто си принтираме сбора на тези комбинации с посочения формат? Но ако го получим - exit() спира цялата програма?

 

Много благодаря!

0
25/10/2019 18:23:49
mark79 avatar mark79 635 Точки

Здравей,

доста правилно си се ориентирал .. ето и корекциите по-твоя код, за да сравниш нещата .. просто си спестяваш няколкото проверки.

if not is_found:
    print(f'{combinations} combinations - neither equals {magic_number}')

Поздрави :)

0
25/10/2019 18:43:15
IrenaRy avatar IrenaRy 5 Точки

Здравей, и аз се сблъсках с този проблем, с най-различен брой изходи. Решението ми (без 'exit') бе, че направих една изнесена най-вляво проверка "ако Булевата стойност НЕ е" и отдолу вече сложих принта, че няма нито една комбинация.

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

      if is_found:
         break
if not is_found:
    print(f'{combinations_counter} combinations - neither equals {magic_number}')

 

Ето го моя код целия, който дава 100 точки в Джъдж: https://pastebin.com/XcAttwYR

0
25/10/2019 23:12:33
NKKalev avatar NKKalev 12 Точки

Благодаря!  :)

0