面向对象

本文介绍了面向对象编程的核心概念,包括自定义类型、继承与组合、方法调用,特别是父类方法的调用和绑定。同时讲解了ord和chr函数在字符与十进制值之间的转换,以及文件操作的基本应用。还涉及了输入输出、条件分支、循环结构如while和for,并给出了实际的代码示例。最后,布置了几个面向对象编程相关的练习题。
摘要由CSDN通过智能技术生成


python学习记录

面向对象

自定义类型

1.类型里定义的变量,所有对象共享
2.类型里定义的变量,需要通过类型修改,不是变量

class Good():
    #类型的变量
    price = 8.88
    def label(self):
        #函数的变量
        #self代表类实例化后的对象
        #如果对象没有属性,则取类属性
        # self.price = 9.99
        print("我是商品")

#类型是class
print(Good)
#对象就是类的实例化
good1 = Good()
#实例化后的类 类型是object
print(good1)
#实例化后的类可以调用类里定义的函数
#我们称它为对象的属性
good1.label()
#
print(good1.price)
good1.price = 7.77

调用父类方法

super 调用父类的方法

class Person():

    def __init__(self, skin, sex, age):
        self.skin = skin
        self.sex = sex
        self.age = age

    def __repr__(self):
        return "我是{0}人,{1}性, {2}岁".format(self.skin, self.sex, self.age)

    def talk(self,msg):
        print(msg)

class White(Person):

    #super函数一般用于父类函数__init__的初始化
    def __init__(self,sex,age):
        super(White,self).__init__("白",sex,age)

    #在子类里重写方法
    def talk(self,msg):
        super(White,self).talk("这里是super函数调用的talk")
        print("我是个白人,我很高傲.", msg)

class Black(Person):
    pass

white = White( "男", 19)
print(white)
white.talk("我很棒")
black = Black("黑", "女", 20)
print(black)
black.talk("i'm good")

绑定

绑定主要是两个修饰器
@classmethod和@staticmethod
第一个是绑定方法到类上,第二个是哪里都不绑定

class Person():

    age = 10

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

    def display_age(self):
        print(self.age)

    #修饰器,表示这个方法是属于类的
    @classmethod
    def display_class_age(cls):
        print(cls.age)

    #staticmethod的作用是使方法不属于类,也不属于对象,全局
    #效果相当于在类外边定义了一个方法
    #为什么不能直接写在类外边,因为面向对象的编程方法不建议在类外边定义函数
    @staticmethod
    def display(age):
        print(age)

p1 = Person(18)
p1.display_age()
#TypeError: display_age() missing 1 required positional argument: 'self'
#因为display_age这个方法是绑定到了对象上,而没有绑定到类上
#Person.display_age()
Person.display_class_age()
p1.display_class_age()
Person.display(25)
p1.display(30)

继承和组合

组合

#一辆车,由发动机和车轮组成

class Engnie():
    pass

class Wheel():
    pass

class Car():

    def __init__(self):
        self.engine = Engnie()
        self.wheel = Wheel()

ord 查看字符的十进制值 chr 查看十进制数字对应的字符

print(ord("a"))  #去ASCII码表查 a对应的十进制是97
print(chr("97"))  #去ASCII码表查 十进制97对应的解释是小写字母a

文件操作(flag:此篇简单记录,后续详细写一篇文件操作博)

#open函数--打开文件
#"r"=read(读)指定文件打开方式
#encoding指定文件编码
f = open("python.py","r",encoding="utf-8")
#read函数读取内容
print(f.read())
#文件打开后一定记得关闭 否则容易泄露
f.close()
#写文件
#指定的文件存在则直接写入,指定的文件不存在,则在此目录下先创建文件再写入
#input:在命令行输入
i = input("请输入你想写入hello.txt中的内容:")
f = open("hello.txt","w",encoding="utf-8")
f.write(i)
f.close()

输入,字符串格式化

1.format

name = input("what't your name?")
age = input("how old are you?")
print("hi {0},你的年龄是{1}吗?".format(name,age))

2.%s

name = input("what't your name?")
age = input("how old are you?")
print("hi %s,你的年龄是%s吗?"%(name,age))

input输入的内容,默认都是字符串,可以使用type()函数查看数据类型

name = input("what't your name?")
print(type(name))

结果是str字符串类型
如果输入的字符串类型不便于使用,则可强制转换数据类型

age = int(input("how old are you?"))
print(type(age))

此时的结果就是int
p.s. 字符串和字符串可以相加

print("break" + "first")
breakfirst

条件if(分支语句)

例1:比大小

#引入random库
import random
#随机生成一个int类型在指定范围内的数字
a = random.randint(0,10)
b = int(input("请说出一个0~10之间你想的数字: "))
if a > b :
    print("你说小了,我的是{0},你的是{1}".format(a,b))
elif a < b :
    print("你说大了,我的是{0},你的是{1}".format(a, b))
else:
    print("好巧!你是{0},我也是{1}".format(b,a))

例2:学生成绩分级

student_score = random.randint(0,100)

if student_score >= 90:
    print("这位同学的分数是%d,成绩是A"%student_score)
elif 89 >= student_score >= 60:
    print("这位同学的分数是%d,成绩是B"%student_score)
else:
    print("这位同学的分数是%d,成绩是C"%student_score)

只有在关键字后的语句(表达式)为True时,才执行这个分支的代码。那么什么是True什么是False呢?

#查看一个表达式是True还是False
print(bool())

经过尝试就会得到,False,None,0,’’,(),{},[]等所有空的都是False

while循环

当while后的条件成立,循环会一直执行,直到break

import random

a = random.randint(0,10)

while True:
    b = int(input("请说出一个0~10之间你想的数字,我们来比一比: "))
    if a > b :
        print("你说小了")
    elif a < b :
        print("你说大了")
    else:
        print("好巧!你是{0},我也是{1}".format(b,a))
        break

输出结果:

请说出一个0~10之间你想的数字,我们来比一比: 6
你说小了
请说出一个0~10之间你想的数字,我们来比一比: 7
你说小了
请说出一个0~10之间你想的数字,我们来比一比: 8
好巧!你是8,我也是8

猜对时,停止循环,继续执行下边的代码
若想继续循环,可使用continue

import random

a = random.randint(0,10)

while True:
    b = int(input("请说出一个0~10之间你想的数字,我们来比一比: "))
    if a > b :
        print("你说小了")
    elif a < b :
        print("你说大了")
    else:
        print("好巧!你是{0},我也是{1}".format(b,a))
        continue

输出结果:只是跳出了本次循环,大循环不会结束,猜对了也会一直循环下去

请说出一个0~10之间你想的数字,我们来比一比: 5
好巧!你是5,我也是5
请说出一个0~10之间你想的数字,我们来比一比: 5
好巧!你是5,我也是5
请说出一个0~10之间你想的数字,我们来比一比: 5
好巧!你是5,我也是5
请说出一个0~10之间你想的数字,我们来比一比: 

for循环

for循环是可以指定次数的循环
例如:输出0~10之间的所有偶数

for i in range(11):  #range函数有头无尾,只填一个数默认从0开始
    if i % 2 == 0:
        print(i)
    continue

例如:上边的栗子比大小,指定循环次数为3,并在最后一次机会时告诉参与者

import random

a = random.randint(0,10)
for i in range(3):
    if i == 2:
        print("这是最后一次机会!!!")
    b = int(input("请说出一个0~10之间你想的数字,我们来比一比: "))
    if a > b :
        print("你说小了")
    elif a < b :
        print("你说大了")
    else:
        print("好巧!你是{0},我也是{1}".format(b,a))
        break

输出结果:参加3次后循环结束

请说出一个0~10之间你想的数字,我们来比一比: 6
你说小了
请说出一个0~10之间你想的数字,我们来比一比: 6
你说小了
这是最后一次机会!!!
请说出一个0~10之间你想的数字,我们来比一比: 6
你说小了

作业

1.四个数字1、2、3、4,可以组成所少互不相同且无重复数字的三位数
2.有一分数序列,2/1,3/2,5/3,8/5…求出这个数列的前20项之和
3.输入字符串,判断是否为回文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值