1 选择结构
1.1单分支结构
if 条件表达式: 语句/语句块 条件表达式:可以是逻辑表达式、关系表达式、算术表达式等。 语句/语句块:可以是一条语句,也可以是多条语句。多条语句,缩进必须对齐一致
条件表达式的值为 False 的情况如下: False、0、0.0、空值 None、空序列对象(空列表、空元祖、空集合、空字典、空字符串)、空 range 对象、空迭代对象 条件表达式中,**不能有赋值操作符“=”**用’’==’'代替
1.2双分支结构
if 条件表达式 : 语句 1/语句块 1 else: 语句 2/语句块 2 三元条件运算符 用来在某些简单双分支赋值情况,格式如下:
条件为真时的值 if (条件表达式) else 条件为假时的值
num = input("请输入一个数字")
print( num if int(num)<10 else "数字太大")
1.3多分支结构
if 条件表达式 1 :
语句 1/语句块 1
elif 条件表达式 2:
语句 2/语句块 2
.
.
.
elif 条件表达式 n :
语句 n/语句块 n
[else:
语句 n+1/语句块 n+1
]
1.4 选择结构嵌套
例子:输入一个分数。分数在 0-100 之间。90 以上是 A,80 以上是 B,70 以上是 C,60 以上是 D。60 以下是 E。
该方法代码更简洁;
score = int(input("请输入一个0-100的数字:"))
degree = "ABCDE"
num = 0
if score >100 and score <0:
score = int(input("重新输入:"))
else:
num = score // 10
if num <6:num = 5
print('分数是{0},等级是{1}'.format(score,degree[9-num]))
2 循环结构
2.1 while循环
while 条件表达式:
循环体语句
2.2 for循环
for 变量 in 可迭代对象:
循环体语句
d = {'name':'gao'}
for i in d.keys():
print(i)
for i in d.values():
print(i)
for i in d.items():
print(i)
Python 包含以下几种可迭代对象: 1. 序列。包含:字符串、列表、元组 2. 字典 3. 迭代器对象(iterator) 4. 生成器函数(generator) 5. 文件对象
2.3 break和continue语句
1 break 可用于while和for循环,用来结束整个循环。当有嵌套循环时,break跳出最近一层循环。
while True:
a = input("请输入一个字符(输入 Q 或 q 结束)")
if a.upper()=='Q':
print("循环结束,退出")
break
else:
print(a)
2 continue语句 句用于结束本次循环,继续下一次。多个循环嵌套时,continue 也是应用于最近的一层循环
要求输入员工的薪资,若薪资小于 0 则重新输入。最后打印出录入员工的数量和 薪资明细,以及平均薪资
empNum = 0
salarySum= 0
salarys = []
while True:
s = input("请输入员工的薪资(按 Q 或 q 结束)")
if s.upper()=='Q':
print("录入完成,退出")
break
if float(s)<0:
continue
empNum +=1
salarys.append(float(s))
salarySum += float(s)
print("员工数{0}".format(empNum))
print("录入薪资:",salarys)
print("平均薪资{0}".format(salarySum/empNum))
2.4 else语句
循环语句中可加入一个else语句,如果循环没有被break结束,则会执行else语句,否则不执行。格式为:
while 条件表达式:
循环体
else:
语句
for 变量 in 可迭代对象:
循环体
else:
语句块
员工一共 4 人。录入这 4 位员工的薪资。全部录入后,打印提示“您已经全部录入 4 名员工的薪资”。最后,打印输出录入的薪资和平均薪资
salarySum= 0
salarys = []
for i in range(4):
s = input("请输入一共 4 名员工的薪资(按 Q 或 q 中途结束)")
if s.upper()=='Q':
print("录入完成,退出")
break
if float(s)<0:
continue
salarys.append(float(s))
salarySum += float(s)
else:
print("您已经全部录入 4 名员工的薪资")
print("录入薪资:",salarys)
print("平均薪资{0}".format(salarySum/4))
2.5 循环优化-高手必备
遵守下面三个原则可以大大提高运行效率,避免不必要的低效计算: 1、尽量减少循环内部不必要的计算 2、嵌套循环中,尽量减少内层循环的计算,尽可能向外提 3、局部变量查询较快,尽量使用局部变量
import time
start = time.time()
for i in range(1000):
result = []
for m in range(10000):
result.append(i*1000+m*100)
end = time.time()
print("耗时:{0}".format((end-start)))
start2 = time.time()
for i in range(1000):
result = []
c = i*1000 计算往外层提
for m in range(10000):
result.append(c+m*100)
end2 = time.time()
print("耗时:{0}".format((end2-start2)))
其它优化手段: 字符串拼接时,使用join()而不使用+ 列表进行元素插入和删除,尽量在列表尾部操作
2.3 使用zip()并行迭代
可以通过 zip()函数对多个序列进行并行迭代,zip()函数在最短序列“用完”时就会停 止。
names = ("高淇","高老二","高老三","高老四")
ages = (18,16,20,25)
jobs = ("老师","程序员","公务员")
for name,age,job in zip(names,ages,jobs):
print("{0}--{1}--{2}".format(name,age,job))
执行结果: 高淇–18–老师 高老二–16–程序员 高老三–20–公务员 同样的效果:
for i in range(3):
print('{}--{}--{}'.format(names[i],ages[i],jobs[i]))
3 推导式创建序列
3.1 列表推导式
[表达式 for item in 可迭代对象]或者
[表达式 for item in 可迭代对象 if 条件判断]
>>>[x for x in range(1,5)]
[1,2,3,4]
>>>[a for a in 'abcde']
['a','b','c','d','e']
>>>[(a,b) for a in range(4) for b in range(4)]
3.2 字典推导式
{key_expressiom:value_expression for 表达式 in 可迭代对象}
统计文本中字符出现的次数:
>>> my_text = ' i love you, i love sxt, i love gaoqi'
>>>> char_count = {c:my_text.count(c) for c in my_text
3.3 集合推导式
{表达式 for item in 可迭代对象}或者
{表达式 for item in 可迭代对象 if 条件判断}
3.4 生成器推到式(生成元组)
(x for x in range(1,100) if x % 9 == 0)
生成一个迭代器:
<generator object <genexpr> at 0x00000241CF012C80>
一个迭代器只能运行一次,第一次迭代可得到数据,第二次迭代数据没了
|