ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

【Python】——空语句与循环语句

【Python】——空语句与循环语句

一、空语句

代码示例:输入一个数字,如果数字为 1, 则打印 hello
a = int(input("请输入一个整数:")) if a == 1: print("hello")
这个代码也可以等价写成:
a = int(input("请输入一个整数:")) if a != 1: pass else: print("hello")

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

如果代码写作:

a = int(input("请输入一个整数:")) if a != 1: else: print("hello")

程序是不符合 Python 语法的,会直接报错

要使用空语句进行占位

二、循环语句

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

2.1 while 循环

(1)基本语法格式

while 条件: 循环体
  • 条件为真,则执行循环体代码
  • 条件为假,则结束循环

(2)代码示例:打印 1-10 的整数

num = 1 while num <= 10: print(num) num += 1
  • 循环变量的初始值
  • 循环的判定条件
  • 循环变量的更新语句

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

缺少更新循环变量的语句,会一直循环下去,除非手动结束程序运行

死循环很多时候是 bug,也有些时候不是 bug

(3)代码示例:计算 1-100 的和

sum = 0 num = 1 while num <= 100: sum += num num += 1 print(sum)

(4)代码示例:计算 5 的阶乘

result = 1 n = 1 while n <= 5: result *= n n += 1 print(result)

(5)代码示例: 求 1! + 2! + 3! + 4! + 5!

num = 1 sum = 0 while num <= 5: factorResult = 1 i = 1 while i <= num: factorResult *= i i += 1 sum += factorResult num += 1 print(sum)

这个程序用到了两重循环。也就是在循环语句中也可以套循环

2.2 for 循环

(1)基本语法格式

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

注意:

  • python 的 for 和其他语言不同, 没有 "初始化语句", "循环条件判定语句", "循环变量更新语句", 而是更加简单
  • 所谓的 "可迭代对象", 指的是 "内部包含多个元素, 能一个一个把元素取出来的特殊变量"

(2)代码示例1:打印 1-10

for i in range(1, 11): print(i)
  • range 函数是一个内建函数,能够生成一个可迭代对象。这个可迭代函数中包含了一系列整数,range(beg,end)=>[beg, end),前闭后开的区间,代码示例中生成的范围是 [1, 11), 也就是 [1, 10]

代码示例2:打印 2, 4, 6, 8, 10

for i in range(2, 12, 2): print(i)
  • 通过 range 的第三个参数, 可以指定迭代时候的"步长"。也就是一次让循环变量加几。

代码示例3:打印 10-1

for i in range(10, 0, -1): print(i)
  • range 的步长也可以设定成负数

代码示例4:求 1 - 100 的和

sum = 0 for i in range(1, 101): sum += i print(sum)

当前有个内建函数,sum咱们自己定义的变量和内建函数冲突了,虽然不影响运行,但是代码后面就无法使用内建函数sum

鼠标移动到变量名上shift+F6,进行更名(Rename),会自动把全部需要更改的名字全部修改。

更改完后,回车或者点击Refactor

2.3 continue

continue 表示结束这次循环, 进入下次循环

(1)代码示例:模拟吃包子,吃第 3 个包子的时候吃出了一只虫

for i in range(1, 6): if i == 3: continue print(f"吃完第 {i} 个包子")

2.4 break

break 表示结束整个循环

(1)代码示例1: 模拟吃包子,吃第 3 个包子的时候吃出了半只虫

for i in range(1, 6): if i == 3: break print(f"吃完第 {i} 个包子")

代码示例2: 输入若干个数字,求平均值。使用 "分号" 作为结尾

sum = 0 count = 0 while True: num = input("请输入数字:") if num == ';': #约定当用户输入 ;时候循环结束 break num = float(num) sum += num count += 1 print(sum / count)

看到while true不一定就是死循环,得看循环体里面是否有break

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进