python练习------类的练习

类的练习题:

1.创建一个名为User 的类,其中包含属性first_name 和last_name ,还有用户简介通常会存储的其他几个属性。在类User 中定义一个名为describe_user() 的方法,它打印用户信息摘要;再定义一个名为greet_user() 的方法,它向用户发出个性化的问候。创建多个表示不同用户的实例,并对每个实例都调用上述两个方法。

– python

class User:

    def __init__(self,first_name,last_name,height,weight):
      self.first_name=first_name
      self.last_name=last_name
      self.height = height
      self.weight = weight
    def describe_user(self):
        print(self.last_name+self.first_name +"的信息是:身高{},体重{}".format(self.height,self.weight))
    def greet_user(self,content):
        print(self.last_name+self.first_name+content)

#创建实例
u1=User("三","张","165","100")#实例是类名加参数
u1.describe_user()
u1.greet_user("你今天真好看")
u2=User("四","李","185","140")
u2.describe_user()
u2.greet_user("你今天真帅")

注意点:1、如果类里面有初始化参数,创建实例的时候,必须在实例里面传递对应个数的参数
2.调用函数的时候实例调用请复习下类函数,静态函数,实例函数

2.定义一个学生类。1)有下面的类属性:

1 .姓名2. 年龄3 .成绩(语文,数学,英语)[每课成绩的类型为整数]

2)类方法:

1.获取学生的姓名:get_name() 返回类型:str

2.获取学生的年龄:get_age() 返回类型:int

3.返回3门科目中最高的分数。get_course() 返回类型:int

写好类以后,可以定义2个同学测试下:

zm = Student(‘zhangming’,20,[69,88,100])

返回结果:zhangming 20 100

class Student:

    def __init__(self,name,age,score):
     self.name=name
     self.age=age
     self.score = score

    def get_name(self):
        return (str(self.name))

    def get_age(self):
        return (int(self.age))

    def get_score(self):
        return  int(max(self.score))

Student_score = Student("张三",20,[69,88,100])
print(Student_score.get_name())
print(Student_score.get_age())
print(Student_score.get_score())

#拓展:如果我的成绩放在了字典里面
score={"语文":110,"数学":140,"英语":120}
print(max(score.values()))

3.按照以下要求定义一个游乐园门票类,并创建实例调用函数,完成儿童和大人的总票价统计(人数不定,由你输入的人数个数来决定)

1)平日票价100元

2)周末票价为平日票价120%

3)儿童半价

#这是我的写
class Ticket:

    def __init__(self,price=100):
        self.price=price
        # self.audlt=adult
        # self.child =child

    def get_ticket_price(self):
        adult=int(input("请输入大人的人数:"))
        child=int(input("请输入儿童的人数:"))
        time=int(input("1-5为工作日,6-7为周末,请输入购票时间:"))#如果不添加int会一直提示您输入的价格有误
        if time in range(1,5):
            print("您需要支付的价格为:{}".format(adult*self.price+child*self.price*0.5))
        elif time in range(6,8):
            print("您需要支付的价格为:{}".format(adult*self.price*1.2+child*self.price*0.5*1.2))
        else:
            print("您输入的价格有误")
Ticket().get_ticket_price()
#总结:使用return的好处是使得函数里边的代码精简,只需要在调用的时候想输入什么样的话语就输入什么样的话语,详见下面的代码
class Ticket:

    def __init__(self,price=100):
     self.price=price

    def ticket_price(self):
        Day=int(input("请输入您要买哪一天的票1-5代表平日6-7代表周末:"))
        Adult=int(input("请输入成人的个数:"))
        Child=int(input("请输入儿童的个数:"))
        if Day in range(1,6):
            total_price=Adult*self.price+Child*self.price*0.5
        elif Day in range(6,8):
            total_price=Adult*self.price*1.2+Child*self.price*0.5*1.2
        else:
            print("您输入有误,请重新输入")
        return total_price

Price=Ticket().ticket_price()
print("您需要支付{}元".format(Price))

4.人和机器猜拳游戏写成一个类,有如下几个函数:

1)函数1:选择角色 1 曹操 2张飞 3 刘备

2)函数2:角色猜拳 1剪刀 2石头 3布 玩家输入一个1-3的数字

3)函数3:电脑出拳 随机产生1个1-3的数字,提示电脑出拳结果

4)函数4:角色和机器出拳对战,对战结束后,最后出示本局对战结果…赢…输,然后提示用户是否继续?按y继续,按n退出。

5)最后结束的时候输出结果 角色赢几局 电脑赢几局,平局几次 游戏结束

import random

class Man_machine_war:
    role_dict={1:"曹操", 2:"张飞", 3: "刘备"}
    punch_dict={1:"剪刀", 2:"石头", 3: "布"}

    def get_role_name(self):#获取角色名
        role_num=int(input("请选择一个角色:1 曹操 2张飞 3 刘备"))
        return self.role_dict[int(role_num)]

    def get_role_punch(self):#角色出拳
        punch_num=input("请出拳:1剪刀 2石头 3布 请输入一个1-3的数字")
        # return self.punch_dict[int(punch_num)]
        return int(punch_num)

    def get_computer_punch(self):#电脑出拳
        punch_num=random.randint(1,3)
        print("电脑出拳:{}".format(punch_num))
        #return self.punch_dict[int(punch_num)]
        return int(punch_num)

    def games(self):#r人机对战
        role_win = 0  # 角色赢
        cp_win = 0  # 电脑赢
        draw = 0  # 平局
        role_name = self.get_role_name()  # 获取角色名
        while True:
            role_punsh=self.get_role_punch()#角色出拳
            computer_punsh=self.get_computer_punch()#电脑出拳
            print(role_name+"出拳为{},电脑出拳为{}".format(self.punch_dict[role_punsh],self.punch_dict[computer_punsh]))
            if role_punsh-computer_punsh==1 or role_punsh-computer_punsh==-2:
                role_win+=1#角色赢了
                print("角色赢了")
            elif role_punsh-computer_punsh==-1 or role_punsh-computer_punsh==2:
                cp_win+=1#电脑赢了
                print("电脑赢了")
            elif role_punsh-computer_punsh==0:
                draw += 1  # 平局
                print("平局")

            choose=input("您是否要继续?按y继续,按n退出")
            if choose=="n":
              break
           # return role_win,cp_win,draw#返回输赢
        print("角色赢了{}局,电脑赢了{}局,平局{}".format(role_win, cp_win, draw))
if __name__=="__main__":
    Man_machine_war().games()

你可能感兴趣的:(python基础知识)