Python中的for和while循环

285 阅读6分钟

什么是循环,什么时候使用它们?

循环是所有编程语言中的一个基本结构。在一个循环结构中,程序首先检查一个条件。如果这个条件为真,就会运行一些代码。除非条件无效,否则这段代码将一直运行下去。

例如,请看下面这段伪代码。

IF stomach_empty
  eat_food()
ENDIF
//check if stomach is empty again.
IF stomach_empty
  eat_food()
ENDIF 
//check if stomach is still empty, 
//....

这里,我们正在检查stomach_empty 变量是否为true 。如果这个条件得到满足,程序将执行eat_food 方法。此外,请注意,我们正在多次输入相同的代码,这意味着这打破了编程的DRY规则

为了缓解这个问题,我们可以像这样使用一个循环结构。

WHILE stomach_empty //this code will keep on running if stomach_empty is true
  eat_food()
ENDWHILE

在这段代码中,我们使用了一个while 语句。在这里,循环首先分析了stomach_empty 布尔值是否为true 。如果这个条件得到满足,程序就会继续运行eat_food ,直到条件变为假。我们将在本文后面学习关于while 循环。

总而言之,开发人员使用循环来多次运行一段代码,直到满足某个条件。因此,这可以节省时间,促进代码的可读性。

循环的类型

在 Python 中,有两种类型的循环结构。

  • for: 迭代一个预定的次数。这也被称为明确的迭代。
  • while: 继续迭代,直到条件false 。这被称为不确定的迭代。

在这篇文章中,你将学习以下概念。

  • for 循环
    • 语法
    • 用数字进行循环
    • 列表循环
  • 列表理解
    • 语法
    • 列表的使用方法
    • 使用数字的用法
  • while 循环
    • 语法
    • 用数字进行循环
    • 循环使用列表
  • 循环控制语句
    • break 语句
    • continue 语句
    • pass 语句
    • else 子句

for 循环

for 循环是一种循环的类型,它可以运行预设的次数。它还可以对任何序列的项目进行迭代,如列表或字符串。

语法

for i in <collection>: 
  <loop body>

这里,collection 是一个对象的列表。循环变量,i ,每次通过循环都会获得collection 中下一个元素的值。loop body 中的代码继续运行,直到i 到达集合的末端。

用数字进行循环

为了演示for 循环,让我们使用一个数字范围循环。

for i in range(10):  # collection of numbers from 0 to 9
    print(i)

在这段代码中,我们使用range 函数来创建一个从0到9的数字集合。后来,我们用print 函数来记录出我们的循环变量i 的值。结果是,这将输出从0到9的数字列表。

range(<end>) 方法返回一个迭代器,该迭代器返回从0开始的整数,一直到但不包括<end>

for Loop Numbers Python

我们甚至可以像这样在我们的循环中使用条件语句。

for i in range(10):  # numbers from 0-9
    if i % 2 == 0:  # is divsible by 2? (even number)
        print(i) # then print.

这段代码将输出所有从0到9的偶数。

for Loop Number Range Python

用列表进行循环

我们甚至可以使用for 循环来迭代列表。

names = ["Bill Gates", "Steve Jobs", "Mark Zuckerberg"] # create our list
for name in names:  # load our list of names and iterate through them
    print(name)

在上面的片段中,我们创建了一个名为names 的列表。后来,我们使用for 命令遍历names 数组,然后将这个列表的内容记录下来。

for Loop List Python

下面的片段使用if 语句来返回所有包含字母'B'的名字。

names = ["Bill Gates", "Billie Eilish", "Mark Zuckerberg"]  # create our list
for name in names:  # load our list of names and iterate through them
    if "B" in name:  # does the name include 'B'?
        print(name)

for List B Names Python

列表理解

在某些情况下,你可能想根据现有列表的数据创建一个新的列表。
例如,请看下面的代码。

names = ["Bill Gates", "Billie Eilish", "Mark Zuckerberg", "Hussain"]
namesWithB = []
for name in names:
    if "B" in name: 
        namesWithB.append(name) # add this element to this array.
print(namesWithB)

在这段代码中,我们使用for 命令来遍历names 数组,然后检查是否有元素包含字母B 。如果为真,程序将这个相应的元素追加到namesWithB 列表中。

List Comprehension in Python

利用列表理解的力量,我们可以在很大程度上缩减这段代码。

语法

newlist = [<expression> for <loop variable> in <list> (if condition)]

这里,expression 可以是一段返回值的代码,例如,一个方法。如果loop variable 满足condition 的要求,list 的元素将被追加到newlist 数组中。

使用列表的用法

让我们用列表理解法重写我们之前写的代码。

names = ["Bill Gates", "Billie Eilish", "Mark Zuckerberg", "Hussain"]
namesWithB = [name for name in names if "B" in name]
print(namesWithB)

在这段代码中,我们对names 数组进行了迭代。根据我们的条件,所有包含字母B 的元素将被添加到namesWithB 列表中。

List Comprehension in Python

数字的用法

我们可以像这样在列表理解中使用range 方法。

numbers = [i for i in range(10)]
print(numbers)

注意,在这种情况下,我们没有条件语句。这意味着条件是可选的。

List comprehension numbers Python

这段代码将使用一个条件来获得0到9之间的偶数列表。

List Comprehension Numbered List with Condition

while 循环

通过while 循环,只要有一个condition ,我们就可以执行一个代码块true

语法

while <condition>:
  <loop body>

在一个while 循环中,首先检查condition 。如果它是true ,就执行loop body 中的代码。这个过程将重复进行,直到condition 变成false

数字的循环

这段代码打印出09 之间的整数。

n = 0
while n < 10: # while n is less than 10,
    print(n) # print out the value of n 
    n += 1 # 

以下是这个例子中发生的情况。

  • n 的初始值是0 。程序首先检查n 是否多于10 。由于这是true ,循环体运行
  • 在这个循环中,我们首先打印出n 的值。后来,我们用1 来增加它。
  • 当循环的主体完成后,程序的执行会再次评估这个条件。因为它仍然是真的,所以主体再次执行。
  • 这样一直持续到n 超过10 。在这一点上,当表达式被测试时,它是false ,并且循环停止。

while Loop with Numbers

用列表进行循环

我们可以使用while 块来迭代列表,像这样。

numbers = [0, 5, 10, 6, 3]
length = len(numbers) # get length of array. 
n = 0
while n < length: # loop condition
    print(numbers[n])
    n += 1

下面是这个程序的分解。

  • len 函数返回numbers 数组中存在的元素数量
  • 我们的while 语句首先检查n 是否小于length 变量。由于这是真的,程序将打印出numbers 列表中的项目。最后,我们要对n 变量进行递增
  • n 超过length ,循环就会停止

while Loops n Length List

循环控制语句

有三个循环控制语句。

  • break: 如果满足一个特定的条件,就终止循环。
  • continue: 如果满足一个特定的条件,跳过一个循环的迭代,继续下一个迭代。continuebreak 的区别是,break 关键字将 "跳出 "循环,但continue 将 "跳过 "循环的一个周期
  • pass: 当你不希望任何命令或代码执行时。

我们可以在whilefor 循环中使用所有这些。

1.break

当你想在某些条件下退出循环时,break 语句很有用true
下面是break 关键字的作用。

names = ["Bill Gates", "Billie Eilish", "Mark Zuckerberg", "Hussain"]
for name in names:
    if name == "Mark Zuckerberg":  
        print("loop exit here.")
        break  # end this loop if condition is true.
    print(name)
print("Out of the loop")

从这段代码中可以得出一些推论。

  • 程序首先在names 数组中进行迭代。
  • 在每个循环中,Python检查name 的当前值是否是Mark Zuckerberg
  • 如果上述条件得到满足,程序将告诉用户它已经停止了循环。
  • 然而,如果条件是false ,程序将打印出的值为name

break Statement

2.continue

continue 语句告诉Python跳过当前的迭代,继续进行下一个迭代。
下面是一个例子。

names = ["Bill Gates", "Billie Eilish", "Mark Zuckerberg", "Hussain"]  
for name in names:
    if name == "Mark Zuckerberg":
        print("Skipping this iteration.")
        continue  # Skip iteration if true.
    print(name)
print("Out of the loop")

下面是这个脚本的分解。

  • 翻阅names 数组
  • 如果应用程序遇到一个值为Mark Zuckerberg 的元素,使用continue 语句跳过这个迭代
  • 否则,打印出我们的循环计数器的值。name

continue Statement

3.pass

如果你不想让任何命令运行,就使用pass 语句。换句话说,pass 允许你执行一个 "空 "操作。这在你的代码要去但还没有写的地方可能是至关重要的。

下面是一个使用pass 关键字的简单例子。

names = ["Bill Gates", "Billie Eilish", "Mark Zuckerberg", "Hussain"]
for name in names:
    if name == "Mark Zuckerberg":
        print("Just passing by...")
        pass  # Move on with this iteration
    print(name)
print("Out of the loop")

这将是输出结果。

pass Statement

4.else 子句

Python 也允许我们在我们的循环中附加else 语句。当循环终止时,else 块内的代码就会执行。
这里是语法。

# for 'for' loops
for i in <collection>: 
  <loop body>
else: 
  <code block> # will run when loop halts.
# for 'while' loops
while <condition>:
  <loop body>
else:
  <code block> # will run when loop halts

在这里,人们可能会想,"为什么不把code block 中的代码紧接着循环之后呢?不是可以达到同样的效果吗?"

这其中有一个小小的区别。如果没有elsecode block ,无论如何都会在循环结束后运行。

然而,有了else 语句,如果循环通过break 关键字终止,code block 将不会运行。

下面是一个例子,以正确理解其目的。

names = ["Bill Gates", "Billie Eilish", "Mark Zuckerberg", "Hussain"]
print("Else won't run here.")
for name in names:
    if name == "Mark Zuckerberg":
        print("Loop halted due to break")
        break  # Halt this loop
    print(name)
else: # this won't work because 'break' was used. 
    print("Loop has finished")

print(" \n Else statement will run here:")
for name in names: 
    print(name)
else: # will work because of no 'break' statement
    print("second Loop has finished")

这将是输出结果。

else Clause Python

结论

在这篇文章中,你学会了如何在Python编程中使用forwhile 循环。此外,你还了解了列表理解和循环改变语句的基本原理。这些都是至关重要的概念,有助于提高你的Python技能。

非常感谢您的阅读!

The postfor and while loop in Pythonappeared first onLogRocket Blog.