文章目录
一、顺序语句
默认情况下, Python 的代码执行顺序是按照从上到下的顺序, 依次执行的
执行结果一定为 “123”, 而不会出现 “321” 或者 “132” 等. 这种按照顺序执行的代码, 我们称为 顺序语句.
- 这个顺序是很关键的. 编程是一件明确无歧义的事情. 安排好任务的顺序, 计算机才能够正确的进行执行.
- 就好像人生的顺序, 是上学, 工作, 结婚, 生子. 一旦这里的顺序乱了, 就很麻烦
二、条件语句
2.1 什么是条件语句
条件语句能够表达 “如果 … 否则 …” 这样的语义. 这构成了计算机中基础的 逻辑判定.
条件语句 也叫做 分支语句, 表示了接下来的逻辑可能有几种走向.
2.2 语法格式
Python 中使用 if else 关键字表示条件语句.
(1) if
f expression:
do_something1
do_something2
next_something
如果 expression 值为 True, 则执行 do_something1, do_something2, next_something
如果 expression 值为 False, 则只执行 next_something, 不执行 do_something1, do_something2
(2) if - else
if expression:
do_something1
else:
do_something2
如果 expression 值为 True, 则执行 do_something1
如果 expression 值为 False, 则执行 do_something2
(3) if - elif - else
if expression1:
do_something1
elif expression2:
do_something2
else:
do_something3
如果 expression1 值为 True, 则执行 do_something1
如果 expression1 值为 False, 并且 expression2 为 True 则执行 do_something2
如果 expression1 值为 False, 并且 expression2 为 False 则执行 do_something3
注意: Python中的条件语句写法, 和很多编程语言不太一样.
- if 后面的条件表达式, 没有 ( ), 使用 : 作为结尾.
- if / else 命中条件后要执行的 “语句块”, 使用 缩进 (通常是 4 个空格或者 1 个 tab)来表示, 而不是 { }
- 对于多条件分支, 不是写作 else if, 而是 elif (合体了).
示例: 输入 1 表示愿意认真学习, 输入 2 表示躺平摆烂.
缩进和代码块
代码块 指的是一组放在一起执行的代码.
在 Python 中使用缩进表示代码块. 不同级别的缩进, 程序的执行效果是不同的,例如:
案例一:
案例二:
注意上述代码的区别.
在代码1 中, print(“world”) 有一级缩进, 这个语句属于 if 内的代码块, 意味着条件成立, 才执行, 条件不成立, 则不执行.
在代码2 中, print(“world”) 没有缩进, 这个语句是 if 外部的代码, 不属于 if 内部的代码块. 意味着条件无论是否成立, 都会执行.
另外, 代码块内部还可以嵌套代码块.
基于缩进的方式表示代码块, 带来的好处就是强制要求程序猿要写明确的缩进, 来明确代码之间的相对关系. 如果缩进书写的不对, 则直接报错
像 C++ / Java 这些语言, 即使完全不写缩进, 语法也不会报错. 代码可读性就比较差.
同时, 带来的坏处就是, 如果缩进层次比较多, 就容易分不清楚某个语句属于哪个层级.
if a == 1:
if b == 2:
if c == 3:
if d == 4:
if e == 5:
if f == 6:
i f g == 7:
print("hello")
print("1")
print("2")
请问, 上述代码中的 print(“1”) 和 print(“2”) 属于哪一级缩进?
因此, 就有了 “写 Python 需要自备游标卡尺” 这个梗.
2.3 练习
(1) 输入一个整数, 判定是否是奇数
a = input('请输入一个整数:')
a = int(a)
if a % 2 == 1: # Python中%余数是非负数
print('奇数')
else:
print('偶数')
(2) 输入一个整数, 判定是正数还是负数
a = input('请输入一个整数:')
a = int(a)
if a < 0:
print('负数')
elif a == 0:
print('0')
else:
print('正数')
(3) 判定年份是否是闰年
year = int(input('请输入年份:'))
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
print('闰年')
else:
print('不是闰年')
2.4 空语句 pass
代码示例: 输入一个数字, 如果数字为 1, 则打印 hello
a = int(input('请输入一个整数:'))
if a == 1:
print('hello')
其中 pass 表示 空语句, 并不会对程序的执行有任何影响, 只是占个位置, 保持 Python 语法格式符合要求.
a = int(input('请输入一个整数:'))
if a != 1:
pass # 可以用pass来占位
else:
print('hello')
三、循环语句
有些操作是需要反复执行的. 这种就需要使用循环.
3.1 while 循环
基本语法格式
while 条件:
循环体
- 条件为真, 则执行循环体代码.
- 条件为假, 则结束循环.
代码示例: 打印 1-10 的整数
代码示例: 计算 1-100 的和
代码示例: 计算 5 的阶乘
代码示例: 求 1! + 2! + 3! + 4! + 5!
3.2 for 循环
基本语法格式
for 循环变量 in 可迭代对象:
循环体
注意:
- python 的 for 和其他语言不同, 没有 “初始化语句”, “循环条件判定语句”, “循环变量更新语句”, 而是更加简单
- 所谓的 “可迭代对象”, 指的是 “内部包含多个元素, 能一个一个把元素取出来的特殊变量”
代码示例: 打印 1-10
使用 range 函数, 能够生成一个可迭代对象. 生成的范围是 [1, 11), 也就是 [1, 10]
代码示例: 打印 2, 4, 6, 8, 10
通过 range 的第三个参数, 可以指定迭代时候的 “步长”. 也就是一次让循环变量加几.
代码示例: 打印 10-1
range 的 步长 也可以设定成负数.
代码示例: 求 1 - 100 的和
3.3 continue
continue 表示结束这次循环, 进入下次循环.
代码示例: 模拟吃包子. 吃第 3 个包子的时候吃出了一只虫.
3.4 break
break 表示结束整个循环
代码示例: 模拟吃包子. 吃第 3 个包子的时候吃出了半只虫.
代码示例: 输入若干个数字, 求平均值. 使用 “分号” 作为结尾.