Python的控制流语句使用
- 判断语句 if分支
- 示意图
- 语法介绍
- 注意事项
- 示例
- for循环
- 示意图
- 语法介绍
- 列表推导式
- 示例
- while循环
- 与for的区别
- 语法介绍
- 示例
判断语句 if分支
示意图
单、双、多分支:
语法介绍
# 单分支
if condition:
expression
# 双分支
if condition:
expression1
else:
expression2
# 多分支
if condition1:
expression1
elif condition2:
expression2
else:
expression3
注意事项
关键词(if、elif和else)所在的行末必须加上英文状态的冒号。
冒号所在行的下一行必须缩进(目的是为了代码的好看与好用)。
elif的正确写法 (错误写法:elseif else if )。
else后面永远不要写条件。
示例
1.二分支:返回一个数的绝对值
# 二分支:返回一个数的绝对值
x = -3
if x >= 0:
print(x)
else:
print(-1*x)
输出:
3
2.多分支:返回成绩对应的等级
# 多分支:返回成绩对应的等级
score = 68
if score < 60:
print('不及格')
elif score < 70:
print('合格')
elif score < 80:
print('良好')
else:
print('优秀')
输出:
合格
3.使用input函数输入一个整数,并判断该整数是否与7相关(可被7整除或含7字样的整数)。
# 使用input函数输入一个整数,并判断该整数是否与7相关(可被7整除或含7字样的整数)
number = input('请输入一个整数:')
if (int(number) % 7 == 0) | (number.find('7') != -1):
print('与7相关')
else:
print('与7不相关')
输出:
请输入一个整数:28
与7相关
请输入一个整数:8
与7不相关
4.使用input函数输入一个身份证号码,并提取出出生日期。
# 使用input函数输入一个身份证号码,并提取出出生日期
ID = input('请输入身份证号码:')
if len(ID) == 18:
birthday = ID[6:14]
print(birthday)
elif len(ID) == 15:
birthday = 19+ID[6:12]
print(birthday)
else:
print('请重新输入身份证号码')
输出:
请输入身份证号码:123456789987654321
78998765
5.使用input函数输入一个身份证号码,并识别性别
18位身份证号性别是倒数第二位
15位身份证号码性别是倒数第一位
(偶数为女,奇数为男)
# 使用input函数输入一个身份证号码,并识别性别;
ID = input('请输入身份证号码:')
if len(ID) == 18:
if int(ID[-2]) % 2 == 0:
print('女')
else:
print('男')
elif len(ID) == 15:
if int(ID[-1]) % 2 == 0:
print('女')
else:
print('男')
else:
print('请重新输入身份证号码')
输出:
请输入身份证号码:123456789987654321
女
请输入身份证号码:123456789012345
男
for循环
示意图
对于for循环来说,就是把可迭代对象中的元素(如列表中的每一个元素)通过漏斗的小口依次倒入之后的执行语句中。
语法介绍
for i in iterable:
if condition:
expression
elif condition:
expression
else:
expression
列表推导式
语法介绍
[expression for i in iterable if condition]
注意:
• expression就是对每一个元素的具体操作表达式
• iterable是某个可迭代对象,如列表、元组或字符串等
• if condition是对每一个元素做分支判断,如果条件符合,则expression操作对应的元素
示例
1.将列表中的每个元素做平方加1处理
# 将列表中的每个元素做平方加1处理
list6 = [1,5,2,8,10,13,17,4,6]
result = []
for i in list6:
y = i ** 2 + 1
result.append(y)
print(result)
输出:
[2, 26, 5, 65, 101, 170, 290, 17, 37]
2.计算1到100之间的偶数和
# 计算1到100之间的偶数和
s1_100 = 0
for i in range(1,101):
if i % 2 == 0:
s1_100 = s1_100 + i
else:
pass
print('1到100之间的偶数和为%d'%s1_100)
输出:
1到100之间的偶数和为2550
3.对列表中的偶数做三次方减10的处理
# 对列表中的偶数做三次方减9的处理
list7 = [3,1,18,13,22,17,23,14,19,28,16]
result = [i ** 3 - 9 for i in list7 if i % 2 == 0]
print(result)
输出:
[5823, 10639, 2735, 21943, 4087]
4.区别列表中所有含”e”字母的单词,列表如下:
[‘one’,‘two’,‘three’,‘four’,‘five’,‘six’,‘seven’,‘eight’,‘nine’]
list = ['one','two','three','four','five','six','seven','eight','nine']
res = []
for i in list:
if i.find('e') != -1:
res.append(i)
print(res)
输出:
[‘one’, ‘three’, ‘five’, ‘seven’, ‘eight’, ‘nine’]
5.将列表的中的元素做平方减5的操作,列表如下:
[10,23,16,11,14,18,21,25,17,22,19]
list = [10,23,16,11,14,18,21,25,17,22,19]
res = []
for i in list:
res.append(i**2-5)
print(res)
输出:
[95, 524, 251, 116, 191, 319, 436, 620, 284, 479, 356]
6.统计列表中各元素的频次,并以字典形式存储统计结果,列表如下:
[‘A’,‘C’,‘A’,‘C’,‘B’,‘C’,‘A’,‘A’,‘B’,‘C’]
list = ['A','C','A','C','B','C','A','A','B','C']
res = {}
for i in list:
res[i] = list.count(i) # count()为统计数目函数
print(res)
输出:
{‘A’: 4, ‘C’: 4, ‘B’: 2}
优化(减少循环次数):
list = ['A','C','A','C','B','C','A','A','B','C']
res = {}
for i in set(list): # set()为几何函数,可以进行排重,从而减少循环数目
res[i] = list.count(i) # count()为统计数目函数
print(res)
while循环
与for的区别
绝大多数场景下,while循环与for循环是可以互相替代的。
如果存在明确的被迭代对象(如列表、元组、字符串等),可优先使用for循环。
如果不存在明确的被迭代对象,使用while循环将会更加地简单。
语法介绍
while condition:
if condition1:
expression1
elif condition2:
expression2
else:
expression3
示例
首先进行一个示例对比
对于for循环:
# 使用for循环登录某手机银行APP – 已知登录总次数的情况
for i in range(1,6):
user = input('请输入用户名:')
password = int(input('请输入密码:'))
if (user == 'test') & (password == 123):
print('登录成功!')
break
else:
if i < 5:
print('错误!您今日还剩%d次输入机会。' %(5-i))
else:
print('请24小时后再尝试登录!')
输出:
请输入用户名:123
请输入密码:123
错误!您今日还剩4次输入机会。
请输入用户名:145
请输入密码:123
错误!您今日还剩3次输入机会。
请输入用户名:test
请输入密码:123
登录成功!
对于while循环:
# 使用while循环登录某邮箱账号 -- 无限次登录次数的情况
while True:
user = input('请输入用户名:')
password = int(input('请输入密码:'))
if (user == 'test') & (password == 123):
print('登录成功!')
break
else:
print('您输入的用户名或密码错误!')
输出:
请输入用户名:123
请输入密码:123
您输入的用户名或密码错误!
请输入用户名:145
请输入密码:123
您输入的用户名或密码错误!
请输入用户名:test
请输入密码:123
登录成功!
1.计算等差数列3n+5的前多少项和不超过1000;
s = 0
n = 0
while s <= 1000:
n += 1
s += 3*n+5
print(n,'--->',s)
print(n-1)
输出:
1 —> 8
2 —> 19
3 —> 33
4 —> 50
5 —> 70
6 —> 93
7 —> 119
8 —> 148
9 —> 180
10 —> 215
11 —> 253
12 —> 294
13 —> 338
14 —> 385
15 —> 435
16 —> 488
17 —> 544
18 —> 603
19 —> 665
20 —> 730
21 —> 798
22 —> 869
23 —> 943
24 —> 1020
23
2.猜数字游戏,给定整数范围,直到猜中为止
import random # 生成随机函数
number = random.randint(10,30) #生成10-30的随机整数
while True:
guess = input('请输入一个10-30的整数:')
if number == int(guess):
print('恭喜你猜中了')
break
elif int(guess) < number:
print('偏小')
else:
print('偏大')
输出:
请输入一个10-30的整数:25
偏大
请输入一个10-30的整数:20
偏大
请输入一个10-30的整数:15
偏大
请输入一个10-30的整数:10
恭喜你猜中了
优化(自己设置上下限制+可以看见变化的上下限):
import random # 生成随机函数
min = int(input('范围最小值:'))
max = int(input('范围最大值:'))
number = random.randint(min,max) #生成10-30的随机整数
while True:
guess = input('请在{}~{}之间猜一个整数:'.format(min,max))
if number == int(guess):
print('恭喜你猜中了')
break
elif int(guess) < number:
print('偏小')
min = guess
else:
print('偏大')
max = guess
输出:
范围最小值:20
范围最大值:60
请在20~60之间猜一个整数:30
偏小
请在30~60之间猜一个整数:50
偏小
请在50~60之间猜一个整数:59
偏大
请在50~59之间猜一个整数:56
偏大
请在50~56之间猜一个整数:55
偏大
请在50~55之间猜一个整数:54
偏大
请在50~54之间猜一个整数:52
恭喜你猜中了