找出列表中和为目标值的两个数,并跳出多重循环

2020-01-19  本文已影响0人  天雨流芳hodo

今天刷到一道题:给定一个整数数组nums和一个目标值target,找出数组中和为目标值的两个数。
nums = [2, 3, 7, 11, 15]
target = 9

nums = [2, 3, 7, 11, 15]
target = 9
count = len(nums)
for i in range(count):
    for j in range(i+1,count):
        print("取出{},{}求和".format(nums[i], nums[j]))
        if nums[i]+nums[j] == target:
            print("找到{}和{}满足".format(nums[i],nums[j]))
            print("*"*10)
            break

打印出结果后,虽然找到了对应的两个数,但很明显不是我们期望的那样跳出循环,因为break能跳出某一重循环(该重循环的本次及剩余次数都不再执行),但并不能跳出该重循环的其他外重循环

取出2,3求和
取出2,7求和
找到2和7满足
**********
取出3,7求和
取出3,11求和
取出3,15求和
取出7,11求和
取出7,15求和
取出11,15求和

所以学习了一下Python跳出多重循环的方法

1.自定义异常

# 方法1:自定义异常,跳出多重循环
nums = [2, 3, 7, 11, 15]
target = 9
count = len(nums)
class Getoutfloop(Exception):
    pass
try:
    for i in range(count):
        for j in range(i+1,count):
            print("取出{},{}求和".format(nums[i], nums[j]))
            if nums[i]+nums[j] == target:
                print("找到{}和{}满足".format(nums[i],nums[j]))
                print("*"*10)
                raise Getoutfloop()
except Getoutfloop:
    pass

2.利用函数的return特性--推荐

# 方法2:在Python中,函数运行到return这一句就会停止,因此可以利用这一特性,将功能写成函数,终止多重循环
nums = [2, 3, 7, 11, 15]
target = 9
count = len(nums)
def test():
    for i in range(count):
        for j in range(i+1,count):
            print("取出{},{}求和".format(nums[i], nums[j]))
            if nums[i]+nums[j] == target:
                print("找到{}和{}满足".format(nums[i],nums[j]))
                print("*"*10)
                return
if __name__ == '__main__':
    test()

3.for...else

# 方法3:for...else...
nums = [2, 3, 7, 11, 15]
target = 9
count = len(nums)
for i in range(count):
    for j in range(i+1,count):
        print("取出{},{}求和".format(nums[i], nums[j]))
        if nums[i]+nums[j] == target:
            print("找到{}和{}满足".format(nums[i],nums[j]))
            print("*"*10)
            break
    else:
        continue
    break
上一篇 下一篇

猜你喜欢

热点阅读