11.while循环
满足条件就停止循环
while 条件:
运行代码
案例:
- 当循环结束,才会打印 ’’’ 游戏结束,不玩儿啦!’’'
count = 0
while count < 3:
temp = input("猜一猜小姐姐想的是哪个数字?")
guess = int(temp)
if guess > 8:
print("大了,大了")
else:
if guess == 8:
print("你太了解小姐姐的心思了!")
print("哼,猜对也没有奖励!")
count = 3
else:
print("小了,小了")
count = count + 1
print("游戏结束,不玩儿啦!")
12.while…else
当while循环时正常结束时,才会执行else下的代码;如果while循环非正常执行结束,不会执行else代码
# break强行终止运行,属于非正常运行结束,返回第一层print()的内容, 输出内容为代码中注释内容
count = 0
while count < 5:
print("%d is less than 5" % count)
break
else:
print("%d is not less than 5" % count)
#0 is less than 5
13.for循环(重点)
遍历数据的每一个内容
for 迭代变量 in 可迭代对象:
代码块
- 对于列表:
member = ['张三', '李四', '刘德华', '刘六', '周润发']
for each in member:
print(each)
# 张三
# 李四
# 刘德华
# 刘六
# 周润发
- 对于字典:
dic = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
只打印索引 key
for key in dic.keys():
print(key, end=' ')
# a b c d
只打印值 value
for value in dic.values():
print(value, end=' ')
# 1 2 3 4
同时打印索引和值
for key, value in dic.items():
print(key, value, sep=':', end=' ')
# a:1 b:2 c:3 d:4
14.for - else 循环
同while…else一样
for num in range(10, 15): # 迭代 10 到 14 之间的数字
for i in range(2, num): # 根据因子迭代
if num % i == 0: # 确定第一个因子
j = num / i # 计算第二个因子
print('%d 等于 %d * %d' % (num, i, j))
break # 跳出当前循环
else: # 循环的 else 部分
print(num, '是一个质数')
# 10 等于 2 * 5
# 11 是一个质数
# 12 等于 2 * 6
# 13 是一个质数
# 14 等于 2 * 7
15.Range()函数
range(开始位置,结束位置,步长)
步长为负:从后往前数,但开始和结束位置要互换,可查看示例
for i in range(2, 9): # 不包含9
print(i)
#2,3,4,5,6,7,8
1-10(不含10)每两个取第一个数
for i in range(1, 10, 2):
print(i)
#1,3,5,7,9
10-1(不含1)每两个取第一个数
for i in range(10, 1, -2):
print(i)
# 10,8,6,4,2
16.enumerate()函数
枚举,同下面items()用法一样,可以同时打印除索引和值
同时打印索引和值
for key, value in dic.items():
print(key, value, sep=':', end=' ')
# a:1 b:2 c:3 d:4
17.break语句
强行终止循环
# break强行终止运行,属于非正常运行结束,返回第一层print()的内容, 输出内容为代码中注释内容
count = 0
while count < 5:
print("%d is less than 5" % count)
break
else:
print("%d is not less than 5" % count)
#0 is less than 5
18.continue语句
与break不同,continue只会将多次循环中的某一次跳过,不会影响接下来的运行
for i in range(10):
if i % 2 != 0:
print(i)
continue
i += 2
print(i)
# 2
# 1
# 4
# 3
# 6
# 5
# 8
# 7
# 10
# 9
19.列表推导式
列表、字典、元组等推导式可到连接进行查看,Ctrl+F 搜索 推导式:https://tianchi.aliyun.com/notebook-ai/detail?spm=5176.19700039.J_9059755190.2.57e53ff4WJLk1S&postId=169961
遍历列表,如果其中的值余2等于0,返回这个值,否则返回0
lst = [1,3,4,5,6,7,8,0]
[i for i in lst if i % 2 == 0 else 0]
20.raise函数
- raise 可以抛出一个指定的异常,是我们自己规定的
try:
raise NameError('HiThere')
except NameError:
print('An exception flew by!')
# An exception flew by!
21.try…except
try:
检测范围
except Exception[as reason]:
出现异常后的处理代码
try:
f = open('test.txt')
print(f.read())
f.close()
except OSError:
print('打开文件出错')
# 打开文件出错
- 一个try语句可能包含多个except子句,分别来处理不同的特定的异常。最多只有一个分支会被执行
try:
int("abc")
s = 1 + '1'
f = open('test.txt')
print(f.read())
f.close()
except OSError as error:
print('打开文件出错\n原因是:' + str(error))
except TypeError as error:
print('类型出错\n原因是:' + str(error))
except ValueError as error:
print('数值出错\n原因是:' + str(error))
# 数值出错
# 原因是:invalid literal for int() with base 10: 'abc'
22.try…except…finally
- 代码在try语句中执行,如果遇到错误,不会因错误导致程序停止,而是跳过这个错误往后执行。例如在爬虫中,因为一条数据去修改整体代码就得不尝试了,try可以很好解决这个问题
- try: 检测范围
- except Exception[as reason]: 出现异常后的处理代码
- finally: 无论如何都会被执行的代码,不管try子句里面有没有发生异常,finally子句都会执行。
def divide(x, y):
try:
result = x / y
print("result is", result)
except ZeroDivisionError:
print("division by zero!")
finally:
print("executing finally clause")
#注释为执行结果
divide(2, 1)
# result is 2.0
# executing finally clause
divide(2, 0)
# division by zero!
# executing finally clause
divide("2", "1")
# executing finally clause
# TypeError: unsupported operand type(s) for /: 'str' and 'str'
Python 标准异常总结
BaseException:所有异常的 基类
Exception:常规异常的 基类
StandardError:所有的内建标准异常的基类
ArithmeticError:所有数值计算异常的基类
FloatingPointError:浮点计算异常
OverflowError:数值运算超出最大限制
ZeroDivisionError:除数为零
AssertionError:断言语句(assert)失败
AttributeError:尝试访问未知的对象属性
EOFError:没有内建输入,到达EOF标记
EnvironmentError:操作系统异常的基类
IOError:输入/输出操作失败
OSError:操作系统产生的异常(例如打开一个不存在的文件)
WindowsError:系统调用失败
ImportError:导入模块失败的时候
KeyboardInterrupt:用户中断执行
LookupError:无效数据查询的基类
IndexError:索引超出序列的范围
KeyError:字典中查找一个不存在的关键字
MemoryError:内存溢出(可通过删除对象释放内存)
NameError:尝试访问一个不存在的变量
UnboundLocalError:访问未初始化的本地变量
ReferenceError:弱引用试图访问已经垃圾回收了的对象
RuntimeError:一般的运行时异常
NotImplementedError:尚未实现的方法
SyntaxError:语法错误导致的异常
IndentationError:缩进错误导致的异常
TabError:Tab和空格混用
SystemError:一般的解释器系统异常
TypeError:不同类型间的无效操作
ValueError:传入无效的参数
UnicodeError:Unicode相关的异常
UnicodeDecodeError:Unicode解码时的异常
UnicodeEncodeError:Unicode编码错误导致的异常
UnicodeTranslateError:Unicode转换错误导致的异常
异常体系内部有层次关系,Python异常体系中的部分关系如下所示:
Python标准警告总结
Warning:警告的基类
DeprecationWarning:关于被弃用的特征的警告
FutureWarning:关于构造将来语义会有改变的警告
UserWarning:用户代码生成的警告
PendingDeprecationWarning:关于特性将会被废弃的警告
RuntimeWarning:可疑的运行时行为(runtime behavior)的警告
SyntaxWarning:可疑语法的警告
ImportWarning:用于在导入模块过程中触发的警告
UnicodeWarning:与Unicode相关的警告
BytesWarning:与字节或字节码相关的警告
ResourceWarning:与资源使用相关的警告