什么是循环,什么时候使用它们?
循环是所有编程语言中的一个基本结构。在一个循环结构中,程序首先检查一个条件。如果这个条件为真,就会运行一些代码。除非条件无效,否则这段代码将一直运行下去。
例如,请看下面这段伪代码。
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 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 循环来迭代列表。
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 数组,然后将这个列表的内容记录下来。
下面的片段使用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)
列表理解
在某些情况下,你可能想根据现有列表的数据创建一个新的列表。
例如,请看下面的代码。
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 列表中。
利用列表理解的力量,我们可以在很大程度上缩减这段代码。
语法
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 列表中。
数字的用法
我们可以像这样在列表理解中使用range 方法。
numbers = [i for i in range(10)]
print(numbers)
注意,在这种情况下,我们没有条件语句。这意味着条件是可选的。
这段代码将使用一个条件来获得0到9之间的偶数列表。
while 循环
通过while 循环,只要有一个condition ,我们就可以执行一个代码块true 。
语法
while <condition>:
<loop body>
在一个while 循环中,首先检查condition 。如果它是true ,就执行loop body 中的代码。这个过程将重复进行,直到condition 变成false 。
数字的循环
这段代码打印出0 和9 之间的整数。
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 块来迭代列表,像这样。
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,循环就会停止
循环控制语句
有三个循环控制语句。
break: 如果满足一个特定的条件,就终止循环。continue: 如果满足一个特定的条件,跳过一个循环的迭代,继续下一个迭代。continue和break的区别是,break关键字将 "跳出 "循环,但continue将 "跳过 "循环的一个周期pass: 当你不希望任何命令或代码执行时。
我们可以在while 和for 循环中使用所有这些。
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
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
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")
这将是输出结果。
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 中的代码紧接着循环之后呢?不是可以达到同样的效果吗?"
这其中有一个小小的区别。如果没有else ,code 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")
这将是输出结果。
结论
在这篇文章中,你学会了如何在Python编程中使用for 和while 循环。此外,你还了解了列表理解和循环改变语句的基本原理。这些都是至关重要的概念,有助于提高你的Python技能。
非常感谢您的阅读!
The postfor and while loop in Pythonappeared first onLogRocket Blog.