python面向對象學習練習題答案0

1、定義一個圓類(Circle),求圓的面積和周長

# -*- coding: utf-8 -*-
import math


class Circle:
    
    
    def __init__(self,r):
        self.r = r
    
    
    def get_area(self):
        return self.r*self.r*math.pi
    
    
    
    def get_cal(self):
        return 2*self.r*math.pi
    

if __name__ == '__main__':
    radius = float(input("請輸入圓的半徑:"))
    if radius > 0 :      
        r1 = Circle(radius)
        print("該圓的周長是{:.3f}".format(r1.get_cal()))
        print("該圓的面積是{:.3f}".format(r1.get_area()))
    else:
        print("半徑不能小於0")

在這裏插入圖片描述
2、定義一個三角形類(Strange),屬性是三邊的長度,求三角形的面積和周長

# -*- coding: utf-8 -*-
import math

class Strange:
    s = 0
    
    def __init__(self,a,b,c):
        self.a = a
        self.b = b
        self.c = c
        
    
    def get_area(self):
        #求面積,使用的海倫公式
        s = (self.a+self.b+self.c)/2
        return math.sqrt(math.sqrt(s*(s-self.a)*(s-self.b)*(s-self.c)))
 
    def get_cal(self):
        #求周長
        s = self.a+self.b+self.c
        return 2*s
    

if __name__ == '__main__':
    print("請依次輸入三邊邊長:")
    a =float(input("請輸輸入三邊之a:"))
    b =float(input("請輸輸入三邊之b:"))
    c =float(input("請輸輸入三邊之c:"))
    '''
    對輸入的三邊進行判斷(1:邊都要大於0,(2:兩邊之和大於第三邊。
    '''
    if a>0 and b>0 and c>0 and a+b>c and a+c>b and b+c>a:
        strange1 = Strange(a,b,c)
        print("三角形的周長是:{:.3f},面積是:{:.3f}".format(strange1.get_cal(),strange1.get_area())) 
    else:
        print("輸入的三條邊不滿足三角形的三邊參數!!!")

在這裏插入圖片描述
3.創建一個學員類(Student),並設計三個字段用於表示學生的成績
(語文、數學、英語);然後定義一個列表list表示一個班
的學生(10人),依次輸入每個學生的信息和成績,輸入
的同時將學員的每科成績劃分等級(100-90:A 89-80:
B 79-70:C 69-60:D 60以下:E)最後輸出所有學員的
信息

# -*- coding: utf-8 -*-

def Rank(sum):
    #對成績的等級進行判斷
    if  90 <= sum <= 100:
        return "A"
    elif 80 <= sum <90:
        return "B"
    elif 70 <= sum <80:
        return "C"
    elif 60 <= sum <70:
        return "D"
    elif sum < 60:
        return "E"
    
    
class Student:
    
    def __init__(self,name,sno,yuwen,shuxue,yingyu):
        #初始化學生對象
        self.name = name
        self.sno = sno
        self.yuwen = yuwen
        self.shuxue = shuxue
        self.yingyu = yingyu 
        
        
    def Rankyuwen(self):
        #語文等級
        return Rank(self.yuwen)
        
    def Rankshuxue(self):
        #數學等級
        return Rank(self.shuxue)
        
    def Rankyingyu(self):
        #英語等級
        return Rank(self.yingyu)
    
    def All_News(self):
        #輸出學生的所有信息
        print("姓名:{},學號{},語文成績{}等級{},數學成績{}等級{},英語成績{}等級{}".format(self.name,self.sno,self.yuwen,self.Rankyuwen(),self.shuxue,self.Rankshuxue(),self.yingyu,self.Rankyingyu()))
        
if __name__ == "__main__":
    list = []
    ls = []
    i = 1
    #輸入10個學生個信息,進行處理,應再加入學號不能相同的判斷,可使用list列表中存放的學號進行判斷處理
    while i <= 10:
        name = input("第{}名學生名字:".format(i))
        sno = int(input("第{}學生學號:".format(i)))
        dir = {name:sno}
        list.append(dir)
        yuwen = float(input("第{}名學生的語文成績:".format(i)))
        shuxue = float(input("第{}名學生的數學成績:".format(i)))
        yingyu = float(input("第{}名學生的英語成績:".format(i)))
        ls.append(Student(name,sno,yuwen,shuxue,yingyu))
        i +=1
        print(list)
    print("所有學生信息:{}".format(list))
    for i in range(0,10):
        ls[i].All_News()

在這裏插入圖片描述
4.編一個關於求多個某門功課總分和平均分的程序。
1.每個學生信息包括姓名和某門功課成績。
2.假設5個學生。
3.類和對象的處理要合理

# -*- coding: utf-8 -*-
def Sum_Ave(num1,num2,num3,num4,num5):
    '''
    這裏我認爲求單科成績的總和和平均值,如果求某學生成績總和和平均值,作爲方法在類Student中創建
    '''
    return "成績總和是"+str(num1+num2+num3+num4+num5)+"平均成績是"+str((num1+num2+num3+num4+num5)/5)

class Student:
    
    def __init__(self,name,sno,yuwen,shuxue,yingyu):
        '''
        對學生的姓名,學號,語文數學,和英語成績做初始化
        '''
        self.name = name
        self.sno = sno
        self.yuwen = yuwen
        self.shuxue = shuxue
        self.yingyu = yingyu
        
    
if __name__ == "__main__":
    ls = []
    i = 1
    '''
    依次輸入學生信息,並創建對象,添加到列表中。
    '''
    while i <= 5:
        name = input("第{}名學生名字:".format(i))
        sno = int(input("第{}學生學號:".format(i)))
        yuwen = float(input("第{}名學生的語文成績:".format(i)))
        shuxue = float(input("第{}名學生的數學成績:".format(i)))
        yingyu = float(input("第{}名學生的英語成績:".format(i)))
        ls.append(Student(name,sno,yuwen,shuxue,yingyu))
        i += 1
    print("共有5名同學,他們的成績如下:")
    print("語文:{}".format(Sum_Ave(ls[0].yuwen,ls[1].yuwen,ls[2].yuwen,ls[3].yuwen,ls[4].yuwen)))
    print("數學:{}".format(Sum_Ave(ls[0].shuxue,ls[1].shuxue,ls[2].shuxue,ls[3].shuxue,ls[4].shuxue)))
    print("英語:{}".format(Sum_Ave(ls[0].yingyu,ls[1].yingyu,ls[2].yingyu,ls[3].yingyu,ls[4].yingyu)))

在這裏插入圖片描述

5.設計一個遊戲角色類
字段:角色名、血量、魔法、狀態
方法:釋放技能 被傷害
要求:設計要合理

# -*- coding: utf-8 -*-

class Role:
    
    
    def __init__(self,name,HP,MP,status,skill):
        '''
        定義角色的名字,血量,藍量,狀態,以及技能和技能傷害值
        '''
        self.name = name
        self.HP = HP
        self.MP = MP
        self.status = status
        self.skill = skill
        self.damage = (MP/HP)*10
        
    def Skill(self,ra,rb):
        '''
        角色A對角色B發起攻擊,並進行藍量的判斷。
        '''
        if ra.MP > 0:
            rb.HP -= rb.damage
            ra.MP -= (self.HP/self.MP)*10
            if ra.MP < 0:
                ra.MP = 0
            print("角色{}使用技能{}對{},造成傷害{}".format(r1.name,r1.skill,r2.name,r1.damage))
        else:
             print("沒藍了。")
    def Roles(self):
        print("角色{},剩餘HP{},剩餘MP{}".format(self.name,self.HP,self.MP))
        

if __name__ == "__main__":
    '''
    創建兩個角色
    '''
    r1 = Role("波哥哥",100,100,"健康","摸摸神功")
    r2 = Role("老鄉",100,100,"亞健康","伏地神功")
    while True:
        '''
        直到某一方血量爲0是跳出循環
        '''
        chioce = (int(input("請輸入1/2,1則{}發動技能,2則{}發動技能:".format(r1.name,r2.name))))
        if chioce == 1:
            r1.Skill(r1,r2)
            r1.Roles()
            r2.Roles()        
        elif chioce == 2:
            r2.Skill(r2,r1)
            r2.Roles()
            r1.Roles()
        else:
            print("輸入無效")
        if r1.HP == 0:
            print("天殺了,波哥哥居然死啦!")
            break
        if r2.HP == 0:
            print("誅殺此賊,幹得漂亮,真乃義舉!")
            break

在這裏插入圖片描述
以上代碼可供參考,學習面向對象參考:點這裏

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章