约束 抛异常
# -----------------------凡事在成熟之前,都是有苦味的.---------------------------# day 19
#項目經理
# class Base:
# def login(self):
# raise NotImplementedError("子類沒有實現該方法") #報錯.拋異常
#
#
# # 普通登錄-->
# class Normal(Base):
# def login(self):
# print("普通登錄")
#
# class Member(Base):
# def logon(self):
# print("吧務登錄")
#
# class Admin(Base):
# def login(self):
# print("管理員登錄")
#
# # 項目經理
# def ohmygod:
# pass
# ---------------------------------------------------------------------------------#
# from abc import ABCMeta, abstractmethod
#
#
# class Animal(metaclass=ABCMeta):
# @abstractmethod
# def chi(self): # 抽象類
# pass
#
#
# class Cat(Animal): # 子類
# def chi(self): # 子類給抽象類給出具體實現的對象,
# print("貓用爪子抓魚吃")
#
#
# c = Cat()
# c.chi()
#
# a = Animal() # 報錯 Animal類是抽象類 不能實例化對象
# a.chi()
# ---------------------------------------------------------------------------------#
#
# def cul(a, b):
# if (type(a) == int or type(a) == float) and (type(b) == int or type == float):
# return a + b
# else:
# raise Exception("輸入不正確,請核查")
#
# # print(cul(1,5))
# # print(cul(1,"ttr"))
#
# try:
# cul(1,"ttr")
# except:
# print("格式不對")
# else:
# print("OK")
# finally:
# print("再次輸入")
# ---------------------------------------------------------------------------------#
# class AgeExcption(Exception):
# pass
#
#
# class Person:
# def __init__(self, age, country):
# self.age = age
# self.country = country
#
# def wacth_movie(self):
# if self.age >= 18:
# print("你成年啦,可以看小電影啦")
# else:
# print("未成年,好好學習吧!")
#
#
# try:
# p1 = Person(25, "China")
# p1.wacth_movie()
#
# p2 = Person(17, "American")
# p2.wacth_movie()
#
# except AgeExcption as exxxx:
# print("小盆友,你還小.")
#
# except Exception as e:
# print("反正進不去")
# -------------------------------[作業.txt]-------------------------------------#
# 1. 整理今日內容, 寫博客
'''
1. 約束(1. 拋出異常, 2. 寫抽象類)(難點, 重點)
1. 拋出異常; NotImplementedError
2. 抽象類
from abc import ABCMeta, abstractmethod
class Base(metaclass = ABCMeta): 抽象類
@abstractmethod
def 方法(self):pass
class Foo(Base): 子類必須重寫父類中的抽象方法
def 方法(self):
pass
一個類包含類抽象方法. 這個類一定是抽象類
抽象類中可以有正常的方法
抽象類中如果有抽象方法. 這個類將不能創建對象
接口: 類中都是抽象方法
2. 異常處理
try:
except Error as e:
except....
else:
finally:
收尾
import traceback
try:
# 嘗試執行的代碼
except Exception as e:
# 除了錯之后要做什么
traceback.format_exc() # 獲取堆棧信息(錯誤信息)
3. 日志處理
logging
critical
error(最多)
wraning
info
debug
預習:
多繼承. 深度遞歸遍歷(經典類)
繼承 MRO c3算法 (難)
super()
面向對象的內容過一遍
'''
# ---------------------------------------------------------------------------------#
# 2. 將課上代碼補全. 對于每種用戶給出不同的文件作為用戶信息的保存.
# 貼吧
# 項目經理(級別高一點兒)
#
# class Base:
# def login(self): # 強制子類做xxxx事
# raise NotImplementedError("子類沒有實現該方法")
# # 子類沒有實現該方法" # 報錯. 拋異常
#
#
# # 1. 普通賬號 --> 翔哥
# class Normal(Base):
# def login(self): # 讀取普通賬戶.txt文件
# print("普通賬號的登錄")
#
#
# # 2. 吧務 - > 強哥
# class Member(Base):
# def login(self): # 讀取普通賬戶.txt文件
# print("吧務的登錄")
#
#
# # 3. 百度員工 -> 明哥
# class Admin(Base):
# def login(self): # 讀取普通賬戶.txt文件
# print("管理員的登錄")
#
#
# # 項目經理
# def wodetian(obj):
# obj.login()
#
#
# n = Normal()
# wodetian(n)
#
# m = Member
# wodetian(m)
#
# a = Admin()
# wodetian(a)
# ---------------------------------------------------------------------------------#
# 3. 在第二題的做完的基礎上去優化代碼. 重構代碼. 想出更加合理
# 更加簡潔的處理方案(升級題)
# ---------------------------------------------------------------------------------#
# 4. 完成植物大戰僵尸代碼編寫. 要求:
# 1. 創建植物類, 植物擁有名稱, 血量, 攻擊力
# class Plant:
# def __init__(self, name, hp, atk):
# self.name = name
# self.hp = hp
# self.atk = atk
#
# def penpen(self, js):
# js.less_hp -= self.atk
#
# def less_hp(self):
# pass
#
#
# # 2. 創建僵尸類, 僵尸擁有名稱, 血量, 攻擊力
#
# class Zom:
# def __init__(self, name, hp, atk):
# self.name = name
# self.hp = hp
# self.atk = atk
#
# def kenken(self, Plant):
# Plant.less_hp()
#
# def less_hp(self):
# pass
# 3. 僵尸和植物都可以互相的攻擊.
# p = Plant("小葵花", 100, 20)
# z = Zom("僵尸叔叔", 100, 30)
#
# # 4. 創建出僵尸和植物. 讓植物去攻擊僵尸兩次. 僵尸反
# # 過來攻擊植物三次
#
# p.penpen(z)
# z.less_hp()
# p.penpen()
# z.less_hp()
#
# z.kenken()
# p.less_hp()
# z.kenken()
# p.less_hp()
# z.kenken()
# p.less_hp()
#
#
# # 5.盡可能減少代碼的編寫.給出最優解決方案(代碼優化)
# # ---------------------------------------------------------------------------------#
# # 5. 完成安裝空調功能, 具體屬性由自己進行設計
# # 1. 創建班級類.
# class Cluss:
# def __init__(self, cluss, grade):
# self.cluss = cluss
# self.grade = grade
#
#
# # 2. 創建空調類
# class Air_conditioner:
# pass
#
#
# # 3. 創建空調師傅類
# class upfitter: # upfitter 裝修工
# def zhuangkt(self):
# print("z")
#
#
# # 4. 空調師傅可以給xxx班級安裝xxx空調
# c = Cluss("二班", "六年級")
# k = Air_conditioner
# u = upfitter
# u.zhuangkt()
# ---------------------------------------------------------------------------------#
# 6. 編寫一個ATM程序. 功能和屬性自行設計. (升級題)
# class ATM:
# def tuqian(self):
# pass
#
#
# class Person:
# def quqian(self):
# pass
#
#
# class display_money:
# def check_money(self):
# pass
#
#
# Atm = ATM()
# xiaohua = Person()
# ck = display_money
# ---------------------------------------------------------------------------------#
# 7. 算法題. 青蛙跳井. 青蛙掉井里了.井深20米 每個白天往上跳5
# 米, 晚上往下滑3米, 問青蛙幾天可以從井里出來. (升級題, 做完
# 上面的題,預習和復習都OK了再想這個)
n = int(input("井深多少米?-->"))
count = 1
while 1:
if n <= 5:
print(count)
break
elif 2 * count + 5 <= n:
count+=1
print(count)
break
elif 2 * count + 5 > n:
count += 1
print(count)
break
# ---------------------------------------------------------------------------------#
'''
7. 明日默寫:
1. 什么是類. 什么是對象
2. 類的成員
3. 函數中 * 和** 分別是用來做什么的?
4. 面向對象的三個特征.
'''
#項目經理
# class Base:
# def login(self):
# raise NotImplementedError("子類沒有實現該方法") #報錯.拋異常
#
#
# # 普通登錄-->
# class Normal(Base):
# def login(self):
# print("普通登錄")
#
# class Member(Base):
# def logon(self):
# print("吧務登錄")
#
# class Admin(Base):
# def login(self):
# print("管理員登錄")
#
# # 項目經理
# def ohmygod:
# pass
# ---------------------------------------------------------------------------------#
# from abc import ABCMeta, abstractmethod
#
#
# class Animal(metaclass=ABCMeta):
# @abstractmethod
# def chi(self): # 抽象類
# pass
#
#
# class Cat(Animal): # 子類
# def chi(self): # 子類給抽象類給出具體實現的對象,
# print("貓用爪子抓魚吃")
#
#
# c = Cat()
# c.chi()
#
# a = Animal() # 報錯 Animal類是抽象類 不能實例化對象
# a.chi()
# ---------------------------------------------------------------------------------#
#
# def cul(a, b):
# if (type(a) == int or type(a) == float) and (type(b) == int or type == float):
# return a + b
# else:
# raise Exception("輸入不正確,請核查")
#
# # print(cul(1,5))
# # print(cul(1,"ttr"))
#
# try:
# cul(1,"ttr")
# except:
# print("格式不對")
# else:
# print("OK")
# finally:
# print("再次輸入")
# ---------------------------------------------------------------------------------#
# class AgeExcption(Exception):
# pass
#
#
# class Person:
# def __init__(self, age, country):
# self.age = age
# self.country = country
#
# def wacth_movie(self):
# if self.age >= 18:
# print("你成年啦,可以看小電影啦")
# else:
# print("未成年,好好學習吧!")
#
#
# try:
# p1 = Person(25, "China")
# p1.wacth_movie()
#
# p2 = Person(17, "American")
# p2.wacth_movie()
#
# except AgeExcption as exxxx:
# print("小盆友,你還小.")
#
# except Exception as e:
# print("反正進不去")
# -------------------------------[作業.txt]-------------------------------------#
# 1. 整理今日內容, 寫博客
'''
1. 約束(1. 拋出異常, 2. 寫抽象類)(難點, 重點)
1. 拋出異常; NotImplementedError
2. 抽象類
from abc import ABCMeta, abstractmethod
class Base(metaclass = ABCMeta): 抽象類
@abstractmethod
def 方法(self):pass
class Foo(Base): 子類必須重寫父類中的抽象方法
def 方法(self):
pass
一個類包含類抽象方法. 這個類一定是抽象類
抽象類中可以有正常的方法
抽象類中如果有抽象方法. 這個類將不能創建對象
接口: 類中都是抽象方法
2. 異常處理
try:
except Error as e:
except....
else:
finally:
收尾
import traceback
try:
# 嘗試執行的代碼
except Exception as e:
# 除了錯之后要做什么
traceback.format_exc() # 獲取堆棧信息(錯誤信息)
3. 日志處理
logging
critical
error(最多)
wraning
info
debug
預習:
多繼承. 深度遞歸遍歷(經典類)
繼承 MRO c3算法 (難)
super()
面向對象的內容過一遍
'''
# ---------------------------------------------------------------------------------#
# 2. 將課上代碼補全. 對于每種用戶給出不同的文件作為用戶信息的保存.
# 貼吧
# 項目經理(級別高一點兒)
#
# class Base:
# def login(self): # 強制子類做xxxx事
# raise NotImplementedError("子類沒有實現該方法")
# # 子類沒有實現該方法" # 報錯. 拋異常
#
#
# # 1. 普通賬號 --> 翔哥
# class Normal(Base):
# def login(self): # 讀取普通賬戶.txt文件
# print("普通賬號的登錄")
#
#
# # 2. 吧務 - > 強哥
# class Member(Base):
# def login(self): # 讀取普通賬戶.txt文件
# print("吧務的登錄")
#
#
# # 3. 百度員工 -> 明哥
# class Admin(Base):
# def login(self): # 讀取普通賬戶.txt文件
# print("管理員的登錄")
#
#
# # 項目經理
# def wodetian(obj):
# obj.login()
#
#
# n = Normal()
# wodetian(n)
#
# m = Member
# wodetian(m)
#
# a = Admin()
# wodetian(a)
# ---------------------------------------------------------------------------------#
# 3. 在第二題的做完的基礎上去優化代碼. 重構代碼. 想出更加合理
# 更加簡潔的處理方案(升級題)
# ---------------------------------------------------------------------------------#
# 4. 完成植物大戰僵尸代碼編寫. 要求:
# 1. 創建植物類, 植物擁有名稱, 血量, 攻擊力
# class Plant:
# def __init__(self, name, hp, atk):
# self.name = name
# self.hp = hp
# self.atk = atk
#
# def penpen(self, js):
# js.less_hp -= self.atk
#
# def less_hp(self):
# pass
#
#
# # 2. 創建僵尸類, 僵尸擁有名稱, 血量, 攻擊力
#
# class Zom:
# def __init__(self, name, hp, atk):
# self.name = name
# self.hp = hp
# self.atk = atk
#
# def kenken(self, Plant):
# Plant.less_hp()
#
# def less_hp(self):
# pass
# 3. 僵尸和植物都可以互相的攻擊.
# p = Plant("小葵花", 100, 20)
# z = Zom("僵尸叔叔", 100, 30)
#
# # 4. 創建出僵尸和植物. 讓植物去攻擊僵尸兩次. 僵尸反
# # 過來攻擊植物三次
#
# p.penpen(z)
# z.less_hp()
# p.penpen()
# z.less_hp()
#
# z.kenken()
# p.less_hp()
# z.kenken()
# p.less_hp()
# z.kenken()
# p.less_hp()
#
#
# # 5.盡可能減少代碼的編寫.給出最優解決方案(代碼優化)
# # ---------------------------------------------------------------------------------#
# # 5. 完成安裝空調功能, 具體屬性由自己進行設計
# # 1. 創建班級類.
# class Cluss:
# def __init__(self, cluss, grade):
# self.cluss = cluss
# self.grade = grade
#
#
# # 2. 創建空調類
# class Air_conditioner:
# pass
#
#
# # 3. 創建空調師傅類
# class upfitter: # upfitter 裝修工
# def zhuangkt(self):
# print("z")
#
#
# # 4. 空調師傅可以給xxx班級安裝xxx空調
# c = Cluss("二班", "六年級")
# k = Air_conditioner
# u = upfitter
# u.zhuangkt()
# ---------------------------------------------------------------------------------#
# 6. 編寫一個ATM程序. 功能和屬性自行設計. (升級題)
# class ATM:
# def tuqian(self):
# pass
#
#
# class Person:
# def quqian(self):
# pass
#
#
# class display_money:
# def check_money(self):
# pass
#
#
# Atm = ATM()
# xiaohua = Person()
# ck = display_money
# ---------------------------------------------------------------------------------#
# 7. 算法題. 青蛙跳井. 青蛙掉井里了.井深20米 每個白天往上跳5
# 米, 晚上往下滑3米, 問青蛙幾天可以從井里出來. (升級題, 做完
# 上面的題,預習和復習都OK了再想這個)
n = int(input("井深多少米?-->"))
count = 1
while 1:
if n <= 5:
print(count)
break
elif 2 * count + 5 <= n:
count+=1
print(count)
break
elif 2 * count + 5 > n:
count += 1
print(count)
break
# ---------------------------------------------------------------------------------#
'''
7. 明日默寫:
1. 什么是類. 什么是對象
2. 類的成員
3. 函數中 * 和** 分別是用來做什么的?
4. 面向對象的三個特征.
'''
轉載于:https://www.cnblogs.com/dealdwong2018/p/9949959.html
總結
- 上一篇: 【译】理解JavaScript中的柯里化
- 下一篇: vue常见问题随笔集