【Python】顺序、条件、循环语句

简介: 默认情况下,Python 的代码执行顺序,是从上到下依次执行的

一. 顺序语句

默认情况下,Python 的代码执行顺序,是从上到下依次执行的:


执行结果一2f64595ac23c4e68bed98a88f487aea5.png定为 “123”,而不会出现 “321” 或者 “132” 等。这种按照顺序执行的代码,我们称为 顺序语句。

这个顺序是很关键的。编程是一件明确无歧义的事情,安排好任务的顺序,计算机才能够正确的进行执行。


二. 条件语句

1. 什么是条件语句

条件语句能够表达 “如果 … 否则 …” 这样的语义,这构成了计算机中基础的 逻辑判定。


即条件语句,就是根据一个具体条件的成立于否,来决定接下来的逻辑走向。


语法格式


Python 中使用 if、elif、else 关键字表示条件语句:

9b7f7288e98d43dcacebbca12f622b1a.png


注意:Python 中的条件语句写法,和很多编程语言不太一样,具体体现在以下三点:


if 后面的条件表达式,没有 ( ),使用 : 作为结尾来代替。

if / elif / else 命中条件后要执行的 “语句块”,使用 缩进 (通常是 4 个空格或者 1 个 tab)来表示,而不是 { }

对于多条件分支,不是写作 else if,而是 elif (合体了)

代码示例


示例:输入 1 表示早餐吃包子,输入 2 表示早餐吃泡馍。


choice = input("输入 1 表示早餐吃包子,输入 2 表示早餐吃泡馍:")
if choice == '1':
    print("包子")
else:
    print("泡馍")


实际开发中,用户的输入,很有可能是出乎意料的!本来期望用户输入 1 或者 2,但是用户实际输入了3:


0e433d3e67e040068d2873ade5d286e1.png

对于非法情况的判定,也是非常必要的!因为你永远不知道用户会如何操作:


choice = input("输入 1 表示早餐吃包子,输入 2 表示早餐吃泡馍:")
if choice == '1':
    print("包子")
elif choice == '2':
    print("泡馍")
else:
    print("输入有误")


2. 缩进和代码块

代码块 指的是一组放在一起执行的代码。在 Python 中使用缩进表示代码块。不同级别的缩进,程序的执行效果是不同的:


cf76a764f59e44b1ae400e03704e0040.png


cf76a764f59e44b1ae400e03704e0040.png

Python 是基于缩进的方式表示代码块的,带来的好处就是强制要求程序猿要写明确的缩进,以明确代码8a70722d86c8464389f098233121ccd2.png之间的相对关系。如果缩进书写的不对,则直接报错:



PS:在 C++/Java 中,对于代码缩进是没有强制要求的,缩进具体怎么写都不影响代码的编译运行结果。如果缩进没有很好的统一风格来写,也就是对于可读性比较影响。


此外,Python 中的代码块还可以嵌套,看下面这个例子:

d4949fca05fe44d9ad69c91511cbaf02.png


同时,嵌套带来的坏处就是:如果缩进层次比较多,就容易分不清楚某个语句属于哪个缩进层级:

257f9a3079c140ef9755074cdba7810a.png



因此,就有了 “写 Python 需要自备游标卡尺” 这个梗:


因为 Python 是通过缩进来区分代码块的(而不是 { } 或者是其他符号),而不是像其他程序语言,缩进仅仅为了可读性。导致打印出来的 Python 代码(比如书),需要肉眼看缩进,有时候遇上翻页,或者代码逻辑比较复杂,缩进比较多时,就需要用尺子来区分代码块了,如果看书不带游标卡尺的话,你就不知道缩进了几层,当然是个夸张的说法。


我们在实际开发中还是要尽量避免写出这种嵌套关系非常复杂的代码的,这样子可读性太差了!


3. 空语句 pass

看如下代码:

if a != '1':
    # 我这儿啥都不做
else:
    print('hello')


编译后报错。虽然希望条件满足的时候啥都不做,但是因为 Python 对于语法格式,尤其是缩进和代码块的要求较严格,所以如果啥都不写(只写个注释)是不符合语法要求的。


38c4fc4a005c495ebb98ed564cd3a30f.png

这种情况下,可以使用空语句(pass)进行占位:


if a != '1':
    pass
else:
    print('hello')

其中 pass 表示空语句,并不会对程序的执行有任何影响,只是占个位置,保持 Python 语法格式符合要求。

很多地方都是如此,虽然我们啥都不想做。但是也得写个 pass 空语句来占位。


4. 练习

(1)输入一个整数,判定是否是奇数


num = int(input('请输入一个整数:'))
if num % 2 == 1:
    print('奇数')
else:
    print('偶数')

补充说明:

Python 中取模运算得到的结果都是正整数:


0e17f5eaa7a94aca82dd8199f8aaadbe.png

int() 函数的转换默认是按照 十进制 的方式来解析的。其参数必须是十进制的整数字符串,如果不符合,在运行时会直接报错:


3db5f68472c34f37999e905f3658d7e2.png

(2)输入一个整数, 判定是正整数还是负整数


整数包括:正整数、负整数和0


num = int(input('请输入一个整数:'))
if num > 0:
    print('正整数')
elif num < 0:
    print('负整数')
else:
    print('为0')


(3)判定年份是否是闰年


满足以下两个条件之一的年份就是闰年:


能被 4 整除,但是不能被 100 整除

能被 400 整除

year = int(input("请输入年份:"))
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
    print("闰年")
else:
    print("平年"


三. 循环语句

有些操作是需要反复执行的,这种就需要使用循环。


1. while 循环

基本语法格式:


while 条件:
  循环体


条件成立,则执行循环体,完事后再去判断条件

条件不成立,则循环结束,退出循环

注意:

27ece0b9365e4326a15ef4c87466e754.png


代码示例


1、打印 1-10 的整数


num = 1
while num <= 10:
    print(num)
    num += 1


2、计算 1-100 的和

sum = 0
num = 1
while num <= 100:
    sum += num
    num += 1
print(f'sum = {sum}')


3、计算 5 的阶乘


ret = 1
num = 1
while num <= 5:
    ret *= num
    num += 1
print(f'5! = {ret}')


4、求 1! + 2! + 3! + 4! + 5!


# 从 1 的阶乘开始算
i = 1
# ret 表示最终的加和结果
ret = 0
while i <= 5:
  # 先计算出当前 i 的阶乘是多少,算出后往 ret 上加
    j = 1
    partSum = 1
    while j <= i:
        partSum *= j
        j += 1
    ret += partSum
    i += 1
print(f'1! + 2! + 3! + 4! + 5! = {ret}')


2. for 循环

基本语法格式:


for 循环变量 in 可迭代对象:
  循环体


补充说明:


python 的 for 和其他语言不同,没有 “初始化语句”、“循环条件判定语句” 和 “循环变量更新语句”,而是更加简单地去遍历取值,相当于 C++ 的 范围for



所谓的 “可迭代对象”,指的是 “内部包含多个元素,并能够一个一个把元素取出来的特殊变量”。


代码示例


1、打印 1-10


# 使用 range 函数,能够生成一个可迭代对象
# 生成的范围是 [1, 11),也就是 [1, 10]
for num in range(1, 11):
    print(num)


可迭代对象,是一种特殊的变量,其内部包含了很多的值。


这里重点介绍一下 range()。它是 Python 的一个内建函数,起到的效果就是得到一个 “可迭代对象”,这个可迭代对象中就包含了一系列的整数,比如 range(begin, end) 对应整数区间 [begin, end),是一个前闭后开的区间。


2、打印 2, 4, 6, 8, 10


range 还提供了第三个参数用来表示步长,其默认值是 1。通过 range 的第三个参数,可以指定迭代时候的 “步长”,也就是控制一次让循环变量加几。


for num in range(2, 11, 2):
    print(num)


3、打印 10-1


range 的步长也可以设定成负数。

for num in range(10, 0, -1):
    print(num)


continue 和 break 语句


continue:立即结束当前这次循环,进入下一次循环

4842be44515141a89b369d7d74726da1.png

break:立即结束整个循环

9004a54da3694da3a974b40a94d526ba.png

相关文章
|
2月前
|
Python
Python循环语句
Python循环语句
17 0
|
4月前
|
Python
|
15天前
|
Python
04-python的循环语句-while循环/for循环/range语句/continue语句/break语句/99乘法表/计算指定数字内的偶数个数/随机猜数字/求100以内的数字之和
04-python的循环语句-while循环/for循环/range语句/continue语句/break语句/99乘法表/计算指定数字内的偶数个数/随机猜数字/求100以内的数字之和
|
2月前
|
Python
Python系列(20)—— 循环语句
Python系列(20)—— 循环语句
|
2月前
|
Java 程序员 C++
Python教程第4章 | 条件语句、循环语句和函数
Python if条件语句,for循环语句、Python函数
60 1
Python教程第4章 | 条件语句、循环语句和函数
|
2月前
|
数据挖掘 Java 编译器
python基础语法——条件语句和循环语句
本文基于pycharm编译器,也可以使用Anaconda 里的编译器,将讲解一些python的一些基础语法知识,是对上篇文章的补充,可以和我写的python数据分析——Python语言基础(数据结构基础)结合起来看,有些知识点可能在这篇文章写的不是很全面。
32 0
|
3月前
|
Python
Python循环语句:深入解析与实践
Python循环语句:深入解析与实践
|
3月前
|
Python
【Python基础】- for/while循环语句
【Python基础】- for/while循环语句
29 0
|
3月前
|
C语言 Python
【Python指南 | 第六篇】条件控制语句、循环语句,这一篇就够了
【Python指南 | 第六篇】条件控制语句、循环语句,这一篇就够了
29 0