Home > Blockchain >  Program is skipping inner loop
Program is skipping inner loop

Time:04-08

I am trying to check whether any two numbers in a list add up to 0, but after the first iteration of j = 1, the program skips the inner loop.

def check_sum(num_list):
    # iterate through the list
    # check whether first number can pair with any other number in list
        # if yes, break
    # if no, check second number, but only check with remaining numbers in the list
    i = 0
    j = 1

    while i < len(num_list):
        check_num = num_list[i]
        print("i = {0}".format(i))
        print("outer: {0}".format(check_num))

        while j < len(num_list):
            print("j = {0}".format(j))
            print("inner: {0}".format(num_list[j]))

            if check_num   num_list[j] == 0:
                return True
            else:
                j =1
        i =1
    
    return False

check_sum([10, -14, 26, 5, -3, 13, -5])

Output

Output

CodePudding user response:

Move your j = 1 inside first loop.

def check_sum(num_list):
    # iterate through the list
    # check whether first number can pair with any other number in list
        # if yes, break
    # if no, check second number, but only check with remaining numbers in the list
    i = 0
    

    while i < len(num_list):
        check_num = num_list[i]
        print("i = {0}".format(i))
        print("outer: {0}".format(check_num))
        j = 1
        while j < len(num_list):
            print("j = {0}".format(j))
            print("inner: {0}".format(num_list[j]))

            if check_num   num_list[j] == 0:
                return True
            else:
                j =1
        i =1
    
    return False

check_sum([10, -14, 26, 5, -3, 13, -5])

CodePudding user response:

j = 1 should be done inside the outer loop:

def check_sum(num_list):
    # iterate through the list
    # check whether first number can pair with any other number in list
        # if yes, break
    # if no, check second number, but only check with remaining numbers in the list
    i = 0
    
    while (i < len(num_list)):
            j = 1
            check_num = num_list[i]
            while ( j < len(num_list) ) : 
                if check_num   num_list[j] == 0:
                    
                    return True
                else:
                    j =1
            i =1
    return False

print(check_sum([10, -14, 26, 5, -3, 13, -5]))
print(check_sum([10, -14, 26, 5, -3, 13, 5]))
  • Related