流程控制
今日总结
今天学习的内容不多,主要是Python中的流程控制,涉及到的语法有if ,for, while这几个关键字。
主要内容:
- if
- while
- for
1. 条件语句if
我们在生活中会遇到各种各样的选择,而我们选择计算机代替自己工作就同样会因为外界环境的变化而面临各种各样的抉择。
在Python中,和条件选择相关的关键字是if,if的基础语法是 if 条件: 代码块,当程序运行到if处,首先判断if的条件的真假,如果为真,则执行if语句包含的代码段,否则会跳过if包含的代码。
num = int(input('请输入数字: '))
if num > 10:
print('大于10的数字')
请输入数字: 15 大于10的数字
上面这段代码就会根据输入的数字是否大于10而做出判断,大于10就会给出提示。
事实上,在生活中我们遇到的很多事,都有不只一种选择,我们可以在多种选择一项最合适的,对应Python中就是if ... elif ...else 语句。
这个语句的意思是Python依次判断if elif 的条件真假,当有一个为真时,便执行其所对应的代码块,而当以上条件都不为真时,则执行else里面的代码块。
score = int(input('请输入你的成绩:'))
if score >= 90:
print('优秀')
elif score >= 80:
print('良好')
elif score >= 60:
print('及格')
else:
print('不及格')
请输入你的成绩:100 优秀
上面这个简单的例子就表明if分支语句每次只会有一个执行,即使同时也满足后面的条件,此外可以跟任意多的elif语句块。
2. 流程控制之循环
Python中主要包含两种循环控制的语法,while和for,这两种语法各有优劣,可以根据具体情况选择合适的循环结构。
2.1 while循环
while循环的语法结构为 while 条件 + 代码块, 意思是当while 的条件为真时,便会循环执行while包含的代码块,除非遇到循环控制关键字break和continue,循环才会发生变化。当while的条件为假时便会结束循环,继续往下执行与while同一缩进的代码。
下面是一个小例子,利用while循环打印1到10的平方数。
n = 1
while n < 11:
print(n ** 2, end=' ')
n += 1
print()
1 4 9 16 25 36 49 64 81 100
break关键字的作用是终止break所属的循环。接下来是break循环控制语句的小例子,实现简单的登录功能,只有当用户输入了正确的账号密码时,程序才会停止运行。
while 1:
user_name = input('请输入用户名: ')
password = input('请输入密码: ')
if user_name == 'root' and password == '123':
print('你好,%s' % user_name)
break
else:
print('用户名或密码错误')
print('程序正常结束!!')
请输入用户名: qer 请输入密码: 2 用户名或密码错误 请输入用户名: root 请输入密码: 123 你好,root 程序正常结束!!
continue是流程控制的又一个关键字,continue作用是会结束本次循环,开始下一次循环,下面的例子是要打印1-10除了5和7的数。
i = 1
while i < 11:
if i in [5, 7]:
i += 1
continue
print(i, end=' ')
i += 1
print()
1 2 3 4 6 8 9 10
循环还有一个特殊语法就是最后可以跟else关键字,用法是当循环不是通过break干预退出循环,而是当条件不满足自动退出循环时就会运行else里代码块。
i = 0
while i < 1:
print('外层循环')
while 1:
print('里层循环')
break
else:
print('里层循环的else语句块') # 里层循环被break退出,并不会执行这句
i += 1
else:
print('外层循环的else语句块')
外层循环 里层循环 外层循环的else语句块
2.2 for循环
for循环的语法结构是 for 变量名 in 可迭代对象 + 代码块,for语句循环的次数是由可迭代对象的长度决定。与while循环相比,当我们需要遍历一些不知道索引的可迭代对象时,for循环就会更优越,例如需要遍历字典,通过for循环就会很方便。
下面是一个用for循环遍历字典的例子。
d = {'name': 'laowang', 'age': 38, 'gender': 'male'}
for k in d:
print(k, d[k])
name laowang age 38 gender male
for循环和while循环都是可以嵌套使用的,接下来是一个打印99乘法表的例子,效果就如下图所示。
for i in range(1, 10):
for j in range(1, i+1):
print('%d*%d=%-2d ' % (j, i, i*j), end='')
print()

for循环的其他语法和while一样,都可以被break和continue控制,也可以在最后添加else代码块。
# 找到5个7的倍数
count = 0
for i in range(1, 100):
if i % 7 == 0:
print(i, end=' ')
count += 1
if count == 5:
break
print()
range方法
在上面几个例子都用到了range方法,这是一个重要的内置方法,range方法可以生成一个指定起始、终止、步长的整数生成器。一般与for循环一起用于迭代。
这个方法还有一些注意点,在Python3中它是一个生成器对象,与Python2的xrange方法一样。在Python2中range方法则是返回一个列表。
Python2:
>>> xrange(10) xrange(10) >>> range(5) [0, 1, 2, 3, 4]
Python3:
>>> range(1000) range(0, 1000)

浙公网安备 33010602011771号