ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

大数协python训练营打卡笔记Task03

2021-11-27 18:34:49  阅读:167  来源: 互联网

标签:语句 python random except try print 打卡 异常 Task03


一、学习知识点概要

①python标准异常总结 ②python标准警告总结 ③try-except语句 ④try-excpet-finally语句 ⑤try-except-else语句 ⑥raise语句

二、学习内容

1.Python 标准异常总结

异常体系内部有层次关系,Python异常体系中的部分关系如下所示:

2.Python标准警告总结

3.try - except 语句

try:
    检测范围(可能出现错误的地方)
except Exception[as reason]:
    出现异常后的处理代码(若出现错误 提出的解决方法)

流程:

①首先执行try语句

②若无异常,仅执行try语句,忽略except子句

③若有异常(执行try子句过程中出现异常),那么try子句余下部分将被忽略

        (1)若except后的名称与异常类型相符,那么对应的except子句将被执行,最后执行try语句之后的代码

        (2)若except后的名称都不与异常类型匹配,那么该异常将传递给上层的try中。

注意

①一个try语句可能包含多个except子句,分别来处理不同的特定的异常。最多只有一个分支会被执行。

②引发多个异常时要注意层次关系,要从最具针对性的异常到最通用的异常。(见层次关系图)(如先KeyError再LookupError)

③一个except语句可以同时处理多个异常,这些异常将被放在一个括号里成为一个元组。

【例子】

try:
    s = 1 + '1'
    int("abc")
    f = open('test.txt')
    print(f.read())
    f.close()
except (OSError, TypeError, ValueError) as error:
    print('出错了!\n原因是:' + str(error))

# 出错了!
# 原因是:unsupported operand type(s) for +: 'int' and 'str'

4.try - except - finally 语句

try:
    检测范围
except Exception[as reason]:
    出现异常后的处理代码
finally:
    无论如何都会被执行的代码

①不管try子句里面有没有发生异常,finally子句都会执行。

②如果一个异常在try子句里被抛出,而又没有任何的except把它截住,那么这个异常会在finally子句执行后被抛出。

5.try - except - else 语句

try:
    检测范围
except:
    出现异常后的处理代码
else:
    如果没有异常执行这块代码

 ①如果在try子句执行时没有发生异常,Python将执行else语句之后的语句。若出现异常,则执行except语句之后的语句。

②使用except而不带任何异常类型,这不是一个很好的方式,我们不能通过该程序识别出具体的异常信息,因为它捕获所有的异常。

【例子】

try:
    检测范围
except(Exception1[, Exception2[,...ExceptionN]]]):
   发生以上多个异常中的一个,执行这块代码
else:
    如果没有异常执行这块代码

注意:else语句的存在必须以except语句的存在为前提,在没有except语句的try语句中使用else语句,会引发语法错误。

6.raise语句

Python 使用raise语句抛出一个指定的异常。

【例子】

try:
    raise NameError('HiThere')
except NameError:
    print('An exception flew by!')
    
# An exception flew by!

三、学习问题与解答(自己遇到的问题+课后题)

【自己遇到的问题】

从最具针对性的异常到最通用的异常。

我的理解是把被包含得最多的放在前 被包含的最少的例如BaseException放后面(?)

看了视频证明我的理解是对的:​​​​​​花了2万多买的Python教程全套,现在分享给大家,入门到精通(Python全栈开发教程)_哔哩哔哩_bilibili

【课后题】 猜数字游戏

思路

①首先学习了随机数的获取方式:(取0-100之间的整数)

import random
a=1
b=100
print(random.randint(a,b))
import random
random.randint(1,100)

②输出"猜测一个0到100之间的整数"

temp = input ("猜测一个0到100之间的整数")

③运用循环语句 while 来拥有多次猜测数字的机会

④运用if语句来判断“太大” “太小” “恭喜你猜到了这个数是”

最终

【我写出的代码】

import random

counts = 0
answer = random.randint(1,100)

while counts == 0:
    temp = input ("猜测一个0到100之间的整数")
    guess = int(temp)
    counts = 0
    if guess == answer:
        print("恭喜你猜到了这个数是",answer)
    else:
        if guess < answer:
            print("太小")
        else:
            print("太大")

【输出效果】

【问题】

①猜对数字后没有结束进程

尝试解决:尝试了在猜对数字的语句后面加了break 然后 它就再也不运行了 然后前面还出现了*号

②在用户每次猜测之前程序没有输出用户是第几次猜测

③没有用到try语句来显示:如果用户输入的根本不是一个数字,程序会告诉用户"输入无效"

try:
    ……
except ValueException:
    print('输入无效')

【修改后的代码】

后面改了一点之后的效果 解决了问题③ 仍存在问题①和②

import random

counts = 0
answer = random.randint(1,100)

try:
    while counts == 0:
        temp = input ("猜测一个0到100之间的整数")
        guess = int(temp)


        if guess == answer:
            print("恭喜你猜到了这个数是",answer)
        else:
            if guess < answer:
                print("太小")
            else:
                print("太大")
except ValueError:
    print('输入无效')

【输出效果】

 

 

四、学习思考与总结

1.对try和except提出了自己的一点思考

try下面是可能出现错误的地方

except是针对错误提出的解决

2.关于try-except-else-finally语句

3.学习了获取随机数的方法

import random
a=1
b=100
print(random.randint(a,b))
import random
random.randint(1,100)

4.python中最常见的异常类型及举例:

#(1)数学运算异常
#ZeroDivisionError 除(或取模)零(所有数据类型)
print(10/0)
#IndexError,索引从0开始 要取第四个输入3
lst=[11,22,33,44]
print(lst[4])
#KeyError(映射中没有这个键)
dic={'name':'张三','age':20}
print(dic['gender'])
#NameError 未声明/初始化对象(没有属性)
print(num)
#SyntaxError Python语法错误
int a=20
#ValueError 传入无效参数
a=int('hello')
#hello是字符串,不能转成十进制整数

5.总结

①自己尝试着写出一段代码还是很有成就感的 虽然还有很多问题需要去解决和学习

②本次学习加笔记用时大概四个小时左右,参考视频有:花了2万多买的Python教程全套,现在分享给大家,入门到精通(Python全栈开发教程)_哔哩哔哩_bilibili 算是有了一个比较深刻的理解

标签:语句,python,random,except,try,print,打卡,异常,Task03
来源: https://blog.csdn.net/Slender_X/article/details/121578642

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有