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