面向对象编程练习

题目1

编写类Book,定义方法update_price,实现更改某本书的价格,具体:如果价格大于150,则更改为150,如果价格大于100,则更改为100,否则不变。

分析如下: 

类名:Book
属性:name、price
构造器:__init__(self, name, price)
方法:update_price 完成功能:如果价格大于150,则更改为150,如果价格大于100,则更改为100,否则不变。
info 完成功能:打印书的信息,包括书的price以及书的name

 代码如下:

class Book:
    def __init__(self, name, price):
        self.name = name
        self.price = price

    def update_price(self):
        if self.price > 150:
            self.price = 150
        elif self.price > 100:
            self.price = 100
        else:
            pass

    def info(self):
       print(f"书的信息为:{self.name},{self.price}")

book = Book("骆驼祥子", 300)
book.info()
book.update_price()
book.info()

输出结果:

书的信息为:骆驼祥子,300
书的信息为:骆驼祥子,150

题目2

定义一个圆类Circle,定义属性:半径,提供显示圆周长功能的方法,提供显示圆面积的方法

分析如下:
类名:Circle
属性:r
构造器:__init__(self, r)
方法:circumference(self) 功能:显示圆周长;circle_area(self) 功能:显示圆面积

 代码如下:

import math
class Circle:
    def __init__(self, r):
        self.r = r

    def circumference(self):
        c = 2 * math.pi * self.r
        print(f"圆的周长为:{c}")
    def circle_area(self):
        s = math.pi * self.r * self.r
        print(f"圆的面积为:{s}")


circle1 = Circle(1)
circle1.circumference()
circle1.circle_area()

输出结果:

圆的周长为:6.283185307179586
圆的面积为:3.141592653589793

题目3

        编程创建一个Cal计算类,在其中定义2个成员变量表示两个操作数,定义四个方法实现求和、差、乘、商(要求除数为0的话,要提示)并创建对象,分别测试 。
分析如下:

类名:Cal
属性:两个成员变量,a,b
构造器:__init__(self, a, b)
方法:def sum_ab(self)、def sub_ab(self)、def mul_ab(self)、def div_ab(self)

class Cal:
    def __init__(self, a, b):
        self.a = a
        self.b = b

    def sum_ab(self):
        sum_ = self.a + self.b
        print(f"{self.a} + {self.b} = {sum_}")

    def sub_ab(self):
        sub_ = self.a - self.b
        print(f"{self.a} - {self.b} = {sub_}")

    def mul_ab(self):
        mul_ = self.a * self.b
        print(f"{self.a} * {self.b} = {mul_}")

    def div_ab(self):
        if self.b == 0:
            print("除数为0,请重新确定除数!\n")
        else:
            div_ = self.a / self.b
            print(f"{self.a} / {self.b} = {div_}")

cal = Cal(5, 6)
cal.sum_ab()
cal.sub_ab()
cal.mul_ab()
cal.div_ab()

输出结果:

5 + 6 = 11
5 - 6 = -1
5 * 6 = 30
5 / 6 = 0.8333333333333334

题目4

        定义Music类,里面有音乐名name、音乐时长times属性,并有播放play功能,和返回本身属性信息的方法get_info。
分析如下:

类名:Music
属性:name、times
构造器: __init__(self, name, times)
方法:play、get_info

代码如下:

class Music:
    def __init__(self, name, times):
        self.name = name
        self.times = times

    def play(self):
        print(f"音乐{self.name}正在播放!")

    def get_info(self):
        print(f"音乐名: {self.name},音乐时长: {self.times}min")


music = Music("小苹果", 5)
music.play()
music.get_info()

输出结果: 

音乐小苹果正在播放!
音乐名: 小苹果,音乐时长: 5min

题目5

分析以下代码的输出结果 

class Demo:
    i = 100

    def m(self):
        self.i += 1
        j = self.i
        print("i=", self.i)
        print("j=", j)


d1 = Demo()
d2 = d1
d2.m()
print(d1.i)
print(d2.i)

输出结果:

i= 101
j= 101
101
101

 题目6

石头剪刀布游戏 

        设计一个人Tom,设计他的成员变量、成员方法,可以进行电脑猜拳,电脑每次都会随机生成0(石头)、1(剪刀)、2(布)。

并要求可以显示Tom的输赢次数(清单)

代码如下: 

import random


class Tom:
    def __init__(self):
        self.win_count = 0
        self.lose_count = 0

    def guess(self):
        choices = ["石头", "剪刀", "布"]
        computer_choice = random.randint(0, 2)

        user_choice = input("请出拳(石头/剪刀/布):")
        if user_choice not in choices:
            print("请输入有效的选择:石头、剪刀或布")
            return

        print(f"Tom选择了:{user_choice}")
        print(f"电脑选择了:{choices[computer_choice]}")

        result = (computer_choice - choices.index(user_choice)) % 3
        if result == 0:
            print("平局!")
        elif result == 1:
            print("Tom赢了!")
            self.win_count += 1
        else:
            print("Tom输了!")
            self.lose_count += 1

    def show_score(self):
        print(f"Tom的输赢次数:赢 {self.win_count} 次,输 {self.lose_count} 次。")


# 创建Tom对象
tom = Tom()

# 进行猜拳游戏
while True:
    tom.guess()
    tom.show_score()
    play_again = input("是否继续游戏?(y/n):")
    if play_again.lower() != 'y':
        break

 上述代码中,我们设计了一个名为Tom的类,其中包含了初始化方法 __init__、猜拳方法 guess 和显示得分方法 show_score。通过调用这些方法,Tom可以与电脑进行猜拳游戏,并记录输赢次数。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值