Python学习笔记11-20(结尾含python各类异常和警告总结)

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:与资源使用相关的警告
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Weidong He.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值