Python While 循环
Python While 循环用于重复执行一个语句块,直到满足给定条件。并且当条件变为假时,程序中的循环之后的行将被执行。 While 循环属于无限迭代的范畴。无限迭代意味着循环执行的次数没有事先明确指定。
句法:
while expression:
statement(s)
语句表示在编程构造被视为单个代码块的一部分后缩进相同数量的字符空间的所有语句。 Python使用缩进作为分组语句的方法。当执行 while 循环时,首先在布尔上下文中计算 expr,如果为真,则执行循环体。然后再次检查 expr,如果它仍然为真,则再次执行主体并继续执行,直到表达式变为假。
While循环流程图:
示例 1: Python While 循环
Python3
# Python program to illustrate
# while loop
count = 0
while (count < 3):
count = count + 1
print("Hello Geek")
Python3
# checks if list still
# contains any element
a = [1, 2, 3, 4]
while a:
print(a.pop())
Python3
# Python program to illustrate
# Single statement while block
count = 0
while (count < 5): count += 1; print("Hello Geek")
Python3
# Prints all letters except 'e' and 's'
i = 0
a = 'geeksforgeeks'
while i < len(a):
if a[i] == 'e' or a[i] == 's':
i += 1
continue
print('Current Letter :', a[i])
i += 1
Python3
# break the loop as soon it sees 'e'
# or 's'
i = 0
a = 'geeksforgeeks'
while i < len(a):
if a[i] == 'e' or a[i] == 's':
i += 1
break
print('Current Letter :', a[i])
i += 1
Python3
# An empty loop
a = 'geeksforgeeks'
i = 0
while i < len(a):
i += 1
pass
print('Value of i :', i)
Python3
# Python program to demonstrate
# while-else loop
i = 0
while i < 4:
i += 1
print(i)
else: # Executed because no break in for
print("No Break\n")
i = 0
while i < 4:
i += 1
print(i)
break
else: # Not executed as there is a break
print("No Break")
Python3
a = int(input('Enter a number (-1 to quit): '))
while a != -1:
a = int(input('Enter a number (-1 to quit): '))
Hello Geek
Hello Geek
Hello Geek
在上面的示例中,只要计数器变量 (count) 小于 3,while 的条件就会为 True。
示例 2:带有列表的Python while 循环
Python3
# checks if list still
# contains any element
a = [1, 2, 3, 4]
while a:
print(a.pop())
4
3
2
1
在上面的示例中,我们在列表上运行了一个 while 循环,该循环将一直运行,直到列表中存在一个元素。
单个语句 while 块
就像 if 块一样,如果 while 块由单个语句组成,我们可以在一行中声明整个循环。如果组成循环体的块中有多个语句,它们可以用分号 (;) 分隔。
Python3
# Python program to illustrate
# Single statement while block
count = 0
while (count < 5): count += 1; print("Hello Geek")
输出:
Hello Geek
Hello Geek
Hello Geek
Hello Geek
Hello Geek
循环控制语句
循环控制语句改变其正常顺序的执行。当执行离开一个范围时,在该范围内创建的所有自动对象都将被销毁。 Python支持以下控制语句。
继续声明
Python Continue 语句将控制返回到循环的开头。
示例:带有 continue 语句的Python while 循环
Python3
# Prints all letters except 'e' and 's'
i = 0
a = 'geeksforgeeks'
while i < len(a):
if a[i] == 'e' or a[i] == 's':
i += 1
continue
print('Current Letter :', a[i])
i += 1
输出:
Current Letter : g
Current Letter : k
Current Letter : f
Current Letter : o
Current Letter : r
Current Letter : g
Current Letter : k
中断语句
Python Break 语句将控制带出循环。
示例:带有 break 语句的Python while 循环
Python3
# break the loop as soon it sees 'e'
# or 's'
i = 0
a = 'geeksforgeeks'
while i < len(a):
if a[i] == 'e' or a[i] == 's':
i += 1
break
print('Current Letter :', a[i])
i += 1
输出:
Current Letter : g
通过声明
Python pass 语句用于编写空循环。 Pass 也用于空的控制语句、函数和类。
示例:带有 pass 语句的Python while 循环
Python3
# An empty loop
a = 'geeksforgeeks'
i = 0
while i < len(a):
i += 1
pass
print('Value of i :', i)
输出:
Value of i : 13
while 循环与 else
如上所述,while 循环执行块直到满足条件。当条件变为假时,立即执行循环之后的语句。 else 子句仅在您的 while 条件变为 false 时执行。如果您跳出循环,或者如果引发异常,它将不会被执行。
注意: for/while 之后的 else 块仅在循环未被 break 语句终止时执行。
Python3
# Python program to demonstrate
# while-else loop
i = 0
while i < 4:
i += 1
print(i)
else: # Executed because no break in for
print("No Break\n")
i = 0
while i < 4:
i += 1
print(i)
break
else: # Not executed as there is a break
print("No Break")
输出:
1
2
3
4
No Break
1
Sentinel 受控声明
在此,我们不使用任何计数器变量,因为我们不知道循环将执行多少次。在这里,用户决定他想要执行多少次循环。为此,我们使用哨兵值。哨兵值是用于在用户输入时终止循环的值,通常哨兵值为-1。
示例:带有用户输入的Python while 循环
Python3
a = int(input('Enter a number (-1 to quit): '))
while a != -1:
a = int(input('Enter a number (-1 to quit): '))
输出:
解释:
- 首先,它要求用户输入一个数字。如果用户输入 -1 则循环不会执行
- 用户输入 6 并执行循环体并再次请求输入
- 在这里用户可以多次输入,直到输入-1停止循环
- 用户可以决定他想输入多少次