日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

day18-面向对象程序进阶和继承(10.13)

發布時間:2024/3/12 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 day18-面向对象程序进阶和继承(10.13) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

day18- 面向對象程序進階和繼承(10.13)

1、作業講評-倒計時計時器

import timeclass CountdownClock:"""倒計時計時器"""def __init__(self, hour, minute, second):"""初始化方法:param hour:時:param minute:分:param second: 秒"""self.hour = hourself.minute = minuteself.second = seconddef show(self):"""顯示時間"""return f'{self.hour:0>2d}:{self.minute:0>2d}:{self.second:0>2d}'# 方法一:正向書寫def is_running(self):# 德莫方法"""判斷倒計時是否還在運行"""return self.hour != 0 or self.minute != 0 or self.second != 0# 方法二:反向書寫# def is_over(self):# """判斷倒計時是否結束(返回bool值)"""# return self.hour == 0 and self.minute == 0 and self.second == 0def run(self): # if not self.is_over():if self.is_running():self.second -= 1if self.second < 0:self.second = 59self.minute -= 1if self.minute < 0:self.minute = 59self.hour -= 1 #clock = CountdownClock(0, 1, 5) print(clock.show()) # while not clock.is_over(): while clock.is_running():time.sleep(1)clock.run()print(clock.show())print('倒計時結束,時間到了')

2、練習

練習1:定義類描述平面上的點,提供移動點,計算一個點到另一個點距離的方法
練習2:定義類描述平面上的線段,提供計算線段長度,判斷一個線段與另一個線段是否相交的方法
練習3:三角形,周長,面積
bi / do / du 二–> double
tri --> 三
quarter
penta

# 自己的練習1 import mathclass Point:def __init__(self, x1, y1, x2, y2):self.x1 = x1self.x2 = x2self.y1 = y1self.y2 = y2def distance(self):return ((self.x1-self.x2)**2+(self.y1-self.y2)**2)**0.5point = Point(1, 2, 3, 4) print(point.distance())#teacher的答案練習1: class Point:def __init__(self, x, y):self.x = xself.y = ydef move_to(self, x, y): #直接移動到某一位置self.x = xself.y = ydef move_by(self, dx, dy): #移動偏移量self.x += dxself.y += dydef distance(self, other):return math.sqrt((self.x - other.x)**2+(self.y-other.y)**2) #????為什么這里可以傳參數otherdef __repr__(self):# return f'({self.x},{self.y})'return f'<{self.x},{self.y}>'p1 = Point(3, 5) p2 = Point(6, 1) p1.move_to(1, -1) p2.move_by(1, -1) print(p1, p2) print(p1.distance(p2)) p2.move_by(1, -1) print(p1.distance(p2))

練習2:定義類描述平面上的線段,提供計算線段長度,判斷一個線段與另一個線段是否相交的方法
**答案

class Line:def __init__(self, start: Point, end: Point):self.start = startself.end = enddef length(self):# 通過Point對象,調用distance方法,來計算線段的距離而不是重新寫公式進行計算,這是對已有代碼的復用return self.start.distance(self.end) # 為什么可以繼續使用上面的方法def intersected(self, other):sx1, sy1, ex1, ey1 = self.start.x, self.start.y, self.end.x, self.end.ysx2, sy2, ex2, ey2 = other.start.x, other.start.y, self.end.x, self.end.yreturn not (max(sx1, ex1) < min(sx2, ex2) ormax(sx2, ex2) < min(sx1, ex1) ormax(sy1, ey1) < min(sy2, ey2) ormax(sy2, ey2) < min(sy1, ey1))p1 = Point(3, 5) p2 = Point(6, 1) p1.move_to(1, -1) p2.move_by(1, -1) print(p1, p2) print(p1.distance(p2)) p2.move_by(1, -1) print(p1.distance(p2))line1 = Line(p1, p2) print(line1.length()) p3 = Point(-1, -2) p4 = Point(6, 2) line2 = Line(p3, p4) print(line2.length()) print(line2.intersected(line1)) p3.move_to(4, 5) line3 = Line(p3, p4) print(line1.intersected(line3))

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-FyIE2IWl-1634122631640)(C:\Users\z\Desktop\tupian\10.13\5.jpg)]

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-89LKa4bW-1634122631644)(C:\Users\z\Desktop\tupian\10.13\4.jpg)]

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-HC3peiKP-1634122631646)(C:\Users\z\Desktop\tupian\10.13\3.jpg)]

練習3:三角形,周長,面積

“”"
靜態方法 - 不是三角形對象的消息,而是發給三角形類的消息
類方法 - 發給類的消息(比靜態方法多一個參數,代表接受消息的類)
靜態方法,類方法是一樣的,類方法多一個參數,類參數可以得到和三角形相關的信息
Triangle.check_sides(a, b, c)
“”"

# 自己練習3: class Triangle: # 三角形def __init__(self, a, b, c):self.a = aself.b = bself.c = cdef is_triangle(self):return ((self.a + self.b) > self.c) and ((self.a + self.c) > self.b) and ((self.c + self.b) > self.a)def perimeter(self):return self.a + self.b + self.cdef area(self):p = self.a + self.b + self.creturn (p/2*(p-self.a)(p-self.b)(p-self.c))**0.5triangle = Triangle(1, 2, 3) if triangle.is_triangle():triangle.perimeter()triangle.area() else:print('不符合三角形構成的條件') class Triangle: # 三角形def __init__(self, a, b, c):self.a = aself.b = bself.c = c# @classmethod# def is_valid_sides(cls, a, b, c):# return a + b > c and b + c > a and a + c > b@staticmethod # 靜態方法,發給類的消息,裝飾器def check_sides(a, b, c):return a + b > c and b + c > a and a + c > bdef perimeter(self):return self.a + self.b + self.cdef area(self):p = self.perimeter()/2a, b, c = self.a, self.b, self.creturn math.sqrt(p * (p-a)*(p-b)*(p-c)) # 海倫公式# *** def main():a, b, c = map(float, input('請輸入三條邊的長度:').split())# 切割默認是空格,字符串強制轉換成floatif Triangle.check_sides(a, b, c):tri = Triangle(a, b, c)print(f'三角形周長:{tri.perimeter()}')print(f'三角形面積:{tri.area()}')print('無法構成三角形')if __name__ == '__main__':#快捷方式main()

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-TNk9Ebob-1634122631649)(C:\Users\z\Desktop\tupian\10.13\7.jpg)]

3、撲克牌游戲案例***

*****撲克游戲案例(反復推敲),有哪些類?對應的對象有哪些屬性和方法?(名詞-類/屬性,動詞-行為)
牌 - 一張 - 屬性:花色/點數 - 行為:顯示牌面,比大小
撲克 - 54張 - 屬性:裝54張牌的列表;- 行為:洗牌/發牌
玩家 - ID/昵稱/手牌(列表);-行為:摸牌/打牌/整理手牌
less than – > lt --> <
great than --> gt --> >
equal to --> eq --> ==
黑杰克的游戲
后面還有哪些階段?具體老師。
“”"
經驗:符號常量總是優于字面常量!!!常量不易改

import randomSPADE, HEART, CLUB, DIAMOND = range(4) # 黑,紅,梅,方class Card:"""牌"""def __init__(self, suite, face): # 花色,牌面點數"""初始化方法:param suite:花色:param face: 牌面"""self.suite = suiteself.face = facedef __repr__(self): # 魔術方法?return self.show()def __lt__(self, other):if self.suite != other.suite:return self.suite < other.suiteface1 = 14 if self.face == 1 else self.faceface2 = 14 if other.face == 1 else other.facereturn face1 < face2def show(self):"""顯示牌面"""suite = ('?', '?', '?', '?')faces = ('', 'A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K')return f'{suite[self.suite]}{faces[self.face]}'class Poker:"""撲克"""def __init__(self): # 推導式語法 shift+alt+上下鍵 上下移self.cards = [Card(suite, face)for suite in range(4)for face in range(1, 14)]self.index = 0def shuffle(self): # 隨機洗牌 方法 - 》random.函數"""洗牌"""self.index = 0random.shuffle(self.cards)def has_more(self):"""有沒有牌可以發出"""return self.index < len(self.cards)def deal(self):"""發牌""" # # return self.cards.pop() #列表.刪除最后一張card = self.cards[self.index]self.index += 1return cardclass Player:"""玩家"""def __init__(self, nickname):"""初始化方法:param nickname: 昵稱"""self.nickname = nicknameself.cards = []def get_card(self, card):"""摸牌"""self.cards.append(card)def arrange(self):"""整理手牌??"""# 列表的sort方法可以傳入key參數來指定根據什么比較元素的大小,從而自定義排序的規則# self.cards.sort(key=lambda card: card.face)# self.cards.sort(key=lambda card: card.suite)poker = Poker() poker.shuffle() names = ('妲己', '狄仁杰', '趙云', '孫悟空') players = [Player(name) for name in names] for _ in range(13):for player in players:card = poker.deal()player.get_card(card)for player in players:player.arrange()print(player.nickname, end='')print(player.cards)# print(poker.cards)# card1 = Card(HEART, 13) # # 沒有repr時輸出情況 # # print(card1.show()) # card2 = Card(DIAMOND, 5) # card3 = Card(SPADE, 6) # print(card1, card2)

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-j943ucue-1634122631651)(C:\Users\z\Desktop\tupian\10.13\8.jpg)]

4、繼承

“”"
繼承:通過已有的類創建新的類,子類會得到父類的繼承信息
python語言運行多重繼承,一個類可以有多個父類
父類:提供繼承信息的(基類,超類)
子類: 得到繼承信息的(派生類)
公共的部分放在父類中,特有的部分寫在子類中,子類通過繼承父類,得到那些公共的部分
繼承也是一種復用代碼的方式
單一繼承:一個類只能有唯一的父類,建議大家使用繼承的時候使用單一繼承
“”"

學生:姓名/年齡/年級;吃飯/玩耍/學習 老師:姓名/年齡/職稱;吃飯/玩耍/授課代碼有很多種很壞的味道,但重復是最壞的一種 """class Person:def __init__(self, name, age):"""初始化方法:param name: 姓名:param age: 年齡:param grade: 年級"""self.name = nameself.age = agedef eat(self):"""吃飯"""print(f'{self.name}正在吃飯.')def play(self):"""玩耍"""print(f'{self.name}正在玩耍.')""" 繼承:通過已有的類創建新的類,子類會得到父類的繼承信息 python語言運行多重繼承,一個類可以有多個父類 父類:提供繼承信息的(基類,超類) 子類: 得到繼承信息的(派生類) 公共的部分放在父類中,特有的部分寫在子類中,子類通過繼承父類,得到那些公共的部分 繼承也是一種復用代碼的方式 單一繼承:一個類只能有唯一的父類,建議大家使用繼承的時候使用單一繼承 """class Student(Person):"""學生"""def __init__(self, name, age, grade):"""初始化方法:param name: 姓名:param age: 年齡:param grade: 年級"""super().__init__(name, age) # 得到父類self.grade = gradedef study(self, course_name):"""學習:param course_name: 課程名稱"""print(f'{self.name}正在學習{course_name}.')class Teacher(Person):"""學生"""def __init__(self, name, age, title):"""初始化方法:param name: 姓名:param age: 年齡:param title: 年級"""super().__init__(name, age)self.title = titledef teach(self, course_name):"""學習:param course_name: 課程名稱"""print(f'{self.name}正在講授{course_name}.')student = Student('王大錘', 18, '大一') teacher = Teacher('陳來', 13, '教授') student.play() student.study('數學') teacher.play() teacher.teach('python數據')

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-pHrGoTVM-1634122631652)(C:\Users\z\Desktop\tupian\10.13\9.jpg)]

day18作業-工資(月薪)結算系統 公司有三類員工,結算工資的方式是不一樣的: 1.部門經理:15000元 / 月 2.程序員->計算工時-->200元/小時 * 本月工時 3.銷售員 -> 底薪+提成 - > 1800元 + 本月銷售額5%提出 給出員工信息列表,自動結算月薪 員工類 employee(員工),employer(雇主) salary manager programmer salesman

5、其他附錄

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-uE6cztFw-1634122631653)(C:\Users\z\Desktop\tupian\10.13\2.jpg)]

student = Student(‘王大錘’, 18, ‘大一’)
teacher = Teacher(‘陳來’, 13, ‘教授’)
student.play()
student.study(‘數學’)
teacher.play()
teacher.teach(‘python數據’)

[外鏈圖片轉存中...(img-pHrGoTVM-1634122631652)]

day18作業-工資(月薪)結算系統
公司有三類員工,結算工資的方式是不一樣的:
1.部門經理:15000元 / 月
2.程序員->計算工時–>200元/小時 * 本月工時
3.銷售員 -> 底薪+提成 - > 1800元 + 本月銷售額5%提出
給出員工信息列表,自動結算月薪
員工類
employee(員工),employer(雇主)
salary
manager
programmer
salesman

### 5、其他附錄[外鏈圖片轉存中...(img-uE6cztFw-1634122631653)][外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-zIQDksJP-1634122631654)(C:\Users\z\Desktop\tupian\10.13\6.jpg)]

總結

以上是生活随笔為你收集整理的day18-面向对象程序进阶和继承(10.13)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久久人人人 | 黄色成人在线播放 | www.色天使 | 国产一级做a爰片久久毛片男 | 一区二区三区免费在线观看视频 | 丰满人妻一区二区三区大胸 | 成人字幕 | 激情小说综合 | 一级在线播放 | 麻豆精品国产传媒av | 毛片1000部免费看 | 激情综合网五月激情 | 国产精品无码一区二区三区在线看 | 激情高潮呻吟抽搐喷水 | 亚洲国产精品va在线看黑人 | 日韩精品一区二区三区高清免费 | 免费看欧美黑人毛片 | 午夜8888 | 精品一区二区三区无码按摩 | 亚洲不卡在线 | 免费一级全黄少妇性色生活片 | 亚洲欧美一区二区三区情侣bbw | 国产三区在线成人av | 人人澡超碰碰97碰碰碰 | 一级黄色大片免费 | fc2ppv在线播放 | www中文字幕在线观看 | 国产级毛片 | 国产在线黄 | 丰满岳乱妇一区二区 | 午夜香蕉网 | 午夜精品久久久内射近拍高清 | 美日韩在线观看 | 久久久久亚洲av成人网人人软件 | 97超碰超碰| 国产又黄又粗又猛又爽视频 | 熟女一区二区三区四区 | 国产精品嫩 | 天天色视频 | 天天在线免费视频 | 草逼网站 | 激情九九 | 成人精品视频一区二区三区尤物 | 极品熟妇大蝴蝶20p 国产偷自拍视频 | 伊人久久影院 | 国产av自拍一区 | 免费麻豆av| 超碰免费在线 | 日韩一区二区免费看 | 日韩一区二区在线免费观看 | 中日韩在线视频 | 激情久久视频 | 久久免费影院 | 国产一级在线免费观看 | 韩国美女av| 黄色片视频免费看 | 国产精品久久久久影院 | 欧美午夜剧场 | 四虎成人免费视频 | 欧美精品videos另类 | 日本一区二区三区免费看 | 69影院在线观看 | 成人毛片18女人毛片免费 | 樱花视频在线观看 | 色欧美片视频在线观看 | 中文字幕国产一区 | 网址av| 婷婷四房综合激情五月 | 白白色视频在线 | 免费看av软件 | 国产激情视频网站 | 久久久国产精品一区二区三区 | 人人插人人射 | 少妇又紧又色又爽又刺激 | 女儿的朋友5中汉字晋通话 欧美成人免费高清视频 | 深夜福利免费视频 | 三级欧美韩日大片在线看 | 91麻豆精品国产91久久久无需广告 | 青春草在线视频免费观看 | 高清av一区 | 日本久久久久久久久久久 | 婷婷av在线 | 香蕉视频黄版 | 综合天天 | 91亚洲在线 | 亚洲国产午夜 | 中文字幕一区二区在线观看视频 | 精品人妻一区二区三区浪潮在线 | 欧美午夜精品久久久久久孕妇 | 999免费| 亚洲狼人干 | 日日麻批免费视频播放 | 在线观看污网站 | 欧美一区二区三区四区五区六区 | 日韩免费黄色片 | 国产欧美精品在线 | 欧洲一区二区三区四区 | 少妇厨房愉情理伦bd在线观看 | 超碰人人在线观看 |