python - 条件返回查询
问题描述
为什么下面的程序是正确的?它检查列表是否1,2,3
存在序列。现在,该else
语句是否应该不与if
行而不是for
行缩进。只要我把它放在下面if
,这个程序的其他测试就会出错。请帮忙解释一下。
def array123(nums):
for x in range(len(nums)-2):
if nums[x]==1 and nums[x+1]==2 and nums[x+2]==3:
return True
else:
return False
array123([1, 1, 2, 3, 1])
解决方案
4.4. break 和 continue 语句,以及循环上的 else 子句#
循环语句可能有一个 else 子句;它在循环通过耗尽可迭代(with for)或条件变为假(with while)而终止时执行,但在循环由 break 语句终止时不执行。下面的循环就是一个例子,它搜索素数:
>>> for n in range(2, 10):
... for x in range(2, n):
... if n % x == 0:
... print(n, 'equals', x, '*', n//x)
... break
... else:
... # loop fell through without finding a factor
... print(n, 'is a prime number')
...
2 is a prime number
3 is a prime number
4 equals 2 * 2
5 is a prime number
6 equals 2 * 3
7 is a prime number
8 equals 2 * 4
9 equals 3 * 3
(是的,这是正确的代码。仔细观察:else 子句属于 for 循环,而不是 if 语句。)
当与循环一起使用时,else 子句与 try 语句的 else 子句相比与 if 语句有更多的共同点:try 语句的 else 子句在没有异常发生时运行,循环的 else 子句在没有中断时运行发生。有关 try 语句和异常的更多信息,请参阅处理异常。
推荐阅读
- javascript - 维护多个会话
- ruby - 有没有办法附加一些函数来初始化和执行它?
- python - 在 pytest 中运行单个文件,该文件是 PEP 420 隐式命名空间包中的一个模块
- javascript - 如何在ajax调用中使用jquery在元素内呈现锚元素
- php - 错误:14094410:SSL 例程:ssl3_read_bytes:sslv3 警报握手失败
- angular - 更改对象的标题 pdf
- gcc - 如何修复 arm-none-eabi-objcopy:错误:输入文件“led”没有部分
- ms-wopi - 加载项按钮在 Office 在线服务器中显示错误
- java - 在 Spring Boot 中使用 Web 套接字通知特定用户
- angular - 单击时如何以角度添加删除(切换)类