python学习日记100-111

1.前言

隔离日记DAY7

2.学习内容

1.bug常见类型 被动掉坑 try except

 a=int(input('请输出第一个整数'))
 b=int(input('请输出第二个整数'))
 result=a/b
 print('结果为',result)
 #若输入的数为字母 或b=0时,也会报错,是由于一些例外形况

这个bug是因为除数不能为0,所以导致程序出错

 try:
     a=int(input('请输出第一个整数'))
     b=int(input('请输出第二个整数'))
     result=a/b
     print('结果为',result)
 #若输入的数为字母 或b=0时,也会报错,是由于一些例外形况
 except ZeroDivisionError:
     print('对不起:除数不允许为0')
 print('程序结束')

把认为可能出错的程序try一下,再把出现的错误except一下。程序就不会报错,也就是提前告知程序哪些地方可能会报错。

 try:
     a=int(input('请输出第一个整数'))
     b=int(input('请输出第二个整数'))
     result=a/b
     print('结果为',result)
 #若输入的数为字母 或b=0时,也会报错,是由于一些例外形况
 except ZeroDivisionError:
     print('对不起:除数不允许为0')
 except ValueError:
     print('只能输入数字串')
 print('程序结束')

2.try-except-else与try-except-else-finally

 try:
     a=int(input('请输出第一个整数'))
     b=int(input('请输出第二个整数'))
     result=a/b
 except  BaseException as e:
     print('出错了',e)
 else:
 ​
     print('计算结果为:',result)

出错的话执行 try-except

不出错的话执行 try-esle

 try:
     a=int(input('请输出第一个整数'))
     b=int(input('请输出第二个整数'))
     result=a/b
 except  BaseException as e:#出错走这里
     print('出错了',e)
 else:#不出错走这里
 ​
     print('计算结果为:',result)
 finally:#出错 不出错都走这里
     print('谢谢您的使用')

同上

3.常见的异常类型

 #1.数学运算异常
 #print(10/0)    ZeroDivisionError
 ​
 ​
 lst=[11,22,33,44]
 #print(lst[4])#IndexError 索引从0开始
 dic={'name':'张三','age':20}
 #print(dic['gender'])#KeyError
 ​
 #print(num)   #NameError
 ​
 #int a=20  #SyntaxError语法错误  不能这么定义
 ​
 a=int('hello')#ValueError 字符串不能转换为十进制整数

4.traceback模块的使用

 意思是traceback模块是打印错误的模块,当我使用except时不会报错,但是我主动调用traceback模块,就会报出错
 #print(10/0)
 import traceback
 try:
     print('--------------')
     print(1/0)
 except:
     traceback.print_exc()

意思是traceback模块是打印错误的模块,当我使用except时不会报错,但是我主动调用traceback模块,就会报出错

5.pycharm的程序调试

 i=1
 while i<=10:
     print(i)
     i+=1

就是设置断点,然后点debug

6.定义python中的类

 class Student:#Student为类的名称(类名),由一个或者多个单词组成,每个字母的首字母大写,其余小写
     pass
 ​
 #python中一切皆对象  Student是对象嘛? 内存有开空间嘛?  有!
 print(id(Student))#Student
 print(type(Student))#<class 'type'>
 print(Student)#<class '__main__.Student'>
 class Student:   #Student为类的名称(类名),由一个或者多个单词组成,每个字母的首字母大写,其余小写
     native_place='吉林'#直接写在类里并且在方法外的变量 称为类属性
     def __init__(self,name,age):
         self.name=name #self.name称为实体属性,进行了一个赋值的操作,将局部变量的name值赋给实体属性
         self.age=age
     #实例方法
     def eat(self):#必须写self
         print('学生在吃饭')
     #静态方法
     @staticmethod
     def method():#不允许写self
         print('我使用了staticmethod进行修饰,所以我是静态方法')
     #类方法
     @classmethod
     def cm(cls):#必须写cls
         print('我是类方法,因为我使用了classmethod进行修饰')
 ​
 ​
 ​
 ​
 #在类之外定义的称为函数,在类之内定义的称为方法
 def drink():
     print('喝水')

注意类名首字母要大写

在类之外定义的称为函数,在类之内定义的称为方法

7.对象的创建

 class Student:  # Student为类的名称(类名),由一个或者多个单词组成,每个字母的首字母大写,其余小写
     native_place = '吉林'  # 直接写在类里的变量 称为类属性
 ​
     def __init__(self, name, age):
         self.name = name  # self.name称为实体属性,进行了一个赋值的操作,将局部变量的name值赋给实体属性
         self.age = age
 ​
     # 实例方法
     def eat(self):  # 必须写self
         print('学生在吃饭')
 ​
     # 静态方法
     @staticmethod
     def method():  # 不允许写self
         print('我使用了staticmethod进行修饰,所以我是静态方法')
 ​
     # 类方法
     @classmethod
     def cm(cls):  # 必须写cls
         print('我是类方法,因为我使用了classmethod进行修饰')
 ​
 ​
 # 在类之外定义的称为函数,在类之内定义的称为方法
 def drink():
     print('喝水')
 ​
 #创建Student类的对象
 stu1=Student('张三',20)#stu1是Student类的对象
 print(id(stu1))
 print(type(stu1))
 print(stu1)#当输出stu1的值是 值为其id的十六进制数
 print('----------------------')
 print(id(Student))#Student是类的名称
 print(type(Student))
 print(Student)

8.类属性 类方法 静态方法的使用方式

 class Student:  # Student为类的名称(类名),由一个或者多个单词组成,每个字母的首字母大写,其余小写
     native_place = '吉林'  # 直接写在类里的变量 称为类属性
 ​
     def __init__(self, name, age):
         self.name = name  # self.name称为实体属性,进行了一个赋值的操作,将局部变量的name值赋给实体属性
         self.age = age
 ​
     # 实例方法
     def eat(self):  # 必须写self
         print('学生在吃饭')
 ​
     # 静态方法
     @staticmethod
     def method():  # 不允许写self
         print('我使用了staticmethod进行修饰,所以我是静态方法')
 ​
     # 类方法
     @classmethod
     def cm(cls):  # 必须写cls
         print('我是类方法,因为我使用了classmethod进行修饰')
 ​
 ​
 #类属性的使用方式
 #print(Student.native_place)
 stu1=Student('张三',20)
 stu2=Student('李四',30)
 print(stu1.native_place)
 print(stu2.native_place)
 Student.native_place='天津'
 print(stu1.native_place)#天津
 print(stu2.native_place)
 print('----------类方法的使用方式----------')
 #类方法的使用方式-
 Student.cm()
 print('----------静态方法的使用方式----------')
 Student.method()
 ​

 

9.动态绑定属性和方法

 class Student:
     def __init__(self,name,age):#
         self.name=name
         self.age=age
     def eat(self):
         print(self.name+'在吃饭')
 ​
 stu1=Student('张三',20)#stu1是Student的实例对象
 stu2=Student('李四',30)#stu2是Student的实例对象
 print(id(stu1))
 print(id(stu2))
 print('-----------为stu2动态绑定性别属性---------')
 stu2.gender='女'#只适用于当前绑定的stu2,而之前定义的name与age是定义在类之中的,是所以实例对象都可以使用的
 print(stu1.name,stu1.age)#张三 20
 print(stu2.name,stu2.age,stu2.gender)#李四 30 女
 ​
 print('-----------------')
 stu1.eat()#张三在吃饭
 stu2.eat()#李四在吃饭
 ​
 #动态绑定方法
 def show():
     print('定义在类之外的,称为函数')
 stu1.show=show#使stu1绑定show方法
 stu1.show()
 ​
 #stu2.show()#AttributeError     错误!因为stu2没有绑定show方法

10.封装的实现方式

 class Car:
     def __init__(self,brand):
         self.brand=brand
     def start(self):
         print(print('汽车已启动...'))
 ​
 car=Car('宝马x5')
 car.start()
 print(car.brand)
 class  Student:
     def __init__(self,name,age):
         self.name=name
         self.__age=age     #age不希望在类的外部被使用,所以加了两个下划线
     def show(self):
         print(self.name,self.__age)
 ​
 stu=Student('张三',20)
 stu.show()

age不希望在类的外部被使用,所以加了两个下划线

3.结束语

隔离第七天马上结束了。我想回去练琴!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值