Python-控制流语句

Posted zjcao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python-控制流语句相关的知识,希望对你有一定的参考价值。

控制流语句

在 Python 中有三种控制流语句——ifforwhile

if 语句

if语句用以检查条件:如果 条件为真(True),我们将运行一块语句(称作 if-block 或 if块),否则 我们将运行另一块语句(称作 else-block 或 else 块),其中 else 从句是可选的。

例子:

#Python if.py
number = 23
guess = int(input(‘Enter an integer:‘))

if guess == number:
    # 新块从这里开始
    print(‘Congratulations, you guessed it.‘)
    print(‘(but you do not win any prizes!)‘)
    # 新块在这里结束
elif guess < number:
    # 另一代码块
    print(‘No, it is a little higher than that‘)
    # 你可以在此做任何你希望在该代码块内进行的事情
else:
    print(‘No, it is a little lower than that‘)
    # 你必须通过猜测一个大于(>)设置数的数字来到达这里。

print(‘Done‘)
# 这最后一句语句将在
# if 语句执行完毕后执行。

输出:

# python if.py
Enter an integer : 50
No, it is a little lower than that
Done

# python if.py
Enter an integer : 22
No, it is a little higher than that
Done

# python if.py
Enter an integer : 23
Congratulations, you guessed it.
(but you do not win any prizes!)
Done

它是如何工作的

在这个程序中,我们根据用户猜测的数字来检查这一数字是否是我们之前所设置的。我们将变量number 设为任何我们所希望的整数,例如23 ,然后,我们通过input()函数来获取用户的猜测数。所谓函数是一种可重复使用的程序。

input() 函数将以字符串的形式返回我们所输入的内容。然后我们通过int 将这个字符串转换成一个整数并将其储存在变量 guess 中。实际上,int是一个类(Class),我们可以使用它将一串字符串转换成一个整数。

接下来,我们将用户提供的猜测数与我们所选择的数字进行对比,如果它们相等,我们就打印一条成功信息。

然后,我们检查猜测数是否小于我们设置的数字,如果是,我们将告诉用户他们必须猜一个更高一些的数字。在这里我们使用的是elif语句,它们实际上将两个相连的if else-if else语句合并成一句 if-elif-else语句。

当 Python 完整执行了if语句及与其相关的elifelse子句后,它将会移动至包含if语句的代码块的下一句语句中。在本例中,也就是主代码块(程序开始执行的地方),其下一句语句就是 print(‘Done‘) 语句。

在完成这些工作后,Python 会发现已行至程序末尾并宣告工作的完成。

注意:
  • 在这里我们使用缩进来告诉 Python 哪些语句分别属于哪个块,这便是为什么在 Python 中缩进如此重要。
  • ifelifelse 语句在结尾处包含一个冒号——我们借此向 Python 指定接下来会有一块语句在后头。
  • 你可以在 if块的 一个 if 语句中设置另一个if 语句,并可以如此进行下去——这被称作嵌套的if语句。
  • elifelse 部分都是可选的,一个最小规模且有效的 if 语句是这样的:
if True:
  print(‘Yes, it is true‘)

while 语句

while 语句能够让你在条件为真的前提下重复执行某块语句,while 语句是 循环(Looping) 语句的一种, while 语句同样可以拥有 else子句作为可选选项。

例子:

#Python while.py
number = 23
running = True

while running:
    guess = int(input(‘Enter an integer:‘))

    if guess == number:
        print(‘Congratulations, you guessed it.‘)
        # 这将导致 while 循环中止
        running = False
    elif guess < number:
        print(‘No, it is a little higher than that.‘)
    else:
        print(‘No, it is a little lower than that.‘)
else:
    print(‘The while loop is over.‘)
    # 在这里你可以做你想做的任何事

print(‘Done‘)

输出:

#Python while.py
Enter an integer:50
No, it is a little lower than that.
Enter an integer:22
No, it is a little higher than that.
Enter an integer:23
Congratulations, you guessed it.
The while loop is over.
Done

它是如何工作的?

在这一程序中,我们依旧通过猜数游戏来演示,不过新程序的优点在于能够允许用户持续猜测直至他猜中为止——而无需像if所做的那样,每次猜测都要重新运行程序。

首先我们将 inputif语句移到 while 循环之中,并在 while 循环开始前将变量running设置为True。程序开始时,我们首先检查变量running是否为True ,之后再执行相应的 while 块。在这一代码块被执行之后,将会重新对条件进行检查,在本例中也就是running 变量。如果它依旧为True,我们将再次执行 while 块,否则我们将继续执行可选的else 块,然后进入到下一个语句中。

else代码块在 while 循环的条件变为 False 时开始执行;如果 while 循环中存在一个 else 代码块,它将总是被执行,除非你通过 break 语句来中断这一循环。

TrueFalse 被称作布尔(Boolean)型,你可以将它们分别等价地视为10

for 循环

for...in 语句是另一种循环语句,其特点是会在一系列对象上进行迭代(Iterates),意即它会遍历序列中的每一个项目。

例子:

# Python for.py
for i in range(1, 5):
    print(i)
else:
    print(‘The for loop is over‘)

输出:

1
2
3
4
The for loop is over

它是如何工作的?

我们通过内置的range函数生成这一数字序列,使用 range时,需要提供两个数字,range 将会返回一个数字序列,从第一个数字开始,至第二个数字结束。例子:range(1,5)将输出序列[1, 2, 3, 4],在默认情况下,range 将会以1 逐步递增,如果我们向 range提供第三个数字,则这个数字将成为逐步递增的加数。举个例子来说明,range(1,5,2) 将会输出[1, 3]

然后 for循环就会在这一范围内展开递归——for i in range(1,5)等价于 for i in [1,2, 3, 4] ,这个操作将依次将队列里的每个数字(或是对象)分配给i,一次一个,然后以每个i 的值执行语句块,在本例中,我们这一语句块所做的就是打印出这些值。

注意:

range(n,m)这一序列扩展直到第m-1个数字,也就是说,它不会包括第m个数字在内。

range() 每次只会生成一个数字,如果你希望获得完整的数字列表,要在使用range() 时调用list()。例如下面这样:list(range(5)) ,它将会返回[0, 1, 2,3, 4]

else 部分是可选的,当循环中包含他时,它总会在for循环结束后开始执行,除非程序遇到了break 语句。

break 语句

break 语句用以中断(Break)循环语句,也就是中止循环语句的执行,即使循环条件没有变更为False,或队列中的项目尚未完全迭代时依旧中断语句。

注意:

如果你 中断 了一个forwhile循环,任何相应循环中的else块都将不会被执行。

例子:

#Python break.py
while True:
    s = input("Enter something:")
    if s == "quit":
        break
    print("Length of the string is",len(s))
print("Done")

输出:

Enter something:Programming is fun
Length of the string is 18
Enter something:When the work is done
Length of the string is 21
Enter something:if you wanna make your work also fun:
Length of the string is 37
Enter something:use Python!
Length of the string is 11
Enter something:quit
Done

它是如何工作的?

通过检查用户输入的是否是 quit 这一特殊条件来判断是否应该终止程序。我们通过中断循环并转进至程序末尾来结束这一程序。

输入字符串的长度可以通过内置的 len函数来计算。

注意:

break语句同样可以适用于for循环。

continue 语句

continue 语句用以告诉 Python 跳过当前循环块中的剩余语句,并继续该循环的下一次迭代。

输入:

#Python continue.py
while True:
    s = input(‘Enter something:‘)
    if s == "quit":
        break
    if len(s)<3:
        print("Too small")
        continue
    print("Input is of sufficient length")

输出:

Enter something:1
Too small
Enter something:12
Too small
Enter something:123
Input is of sufficient length
Enter something:quit

它是如何工作的?

在本程序中,我们读取用户的输入,只有在输入的字符串长度小于3 字符我们才会对其进行处理。为此,我们使用内置的len函数和来获取字符串的长度,如果其长度小于3,我们便通过使用 continue 语句跳过代码块中的其余语句。否则,循环中的剩余语句将被执行。

注意:

continue 语句同样能用于 for循环。

总结

我们已经了解了三种控制流语句—— ifwhilefor——及其相关的breakcontinue 语句是如何工作的。这些语句是 Python 中一些最常用的部分,因此,熟练使用它们是必要的。

以上是关于Python-控制流语句的主要内容,如果未能解决你的问题,请参考以下文章

python控制流

[python]程序结构与控制流

Python编程快速上手_第 2 章 控制流

python控制流-循环

Python-控制流语句

第三讲:控制流:条件语句(上)