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

今天刷到一道题:给定一个整数数组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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容