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

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

作者: 天雨流芳hodo | 来源:发表于2020-01-19 17:28 被阅读0次

今天刷到一道题:给定一个整数数组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

相关文章

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

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

  • 1. 两数之和Two Sum

    给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 Given an array of integers...

  • leetcode1

    给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 给定 nums = [2, 7, 11, 15], ...

  • LeetCode1.两数之和JavaScript

    LeetCode1.两数之和JavaScript 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可...

  • [LeetCode] 两数之和

    给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 nums=[2, 7, 11, 15], targe...

  • 1.两数之和(Two Sum)

    1. 两数之和(Two Sum) 题目难度: 简单 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 ...

  • LeetCode算法大挑战oneDay

    给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。给定 nums = [2, 7, 11, 15], t...

  • leetcode 1. 两数之和

    leetcode 1. 两数之和题目: 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 你可以假设每...

  • LeetCode刷题 1 两数之和

    LeetCode刷题 1 两数之和 题目 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每...

  • 「算法」两数之和 & 两数之和 II

    00001 两数之和 题目描述 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 你可以假设每个输入只...

网友评论

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

      本文链接:https://www.haomeiwen.com/subject/ilitzctx.html