python23day
内容回顾
面向对象
- 类:是具有相同属性和相似功能的一类事物
- 对象/实例:具体的,一类可以有多个对象
- 实例化
练习
# 定义一个圆形类,半径是这个圆的属性,实例化一个半径为5的圆形,一个半径为10的圆形
# 完成方法:
# 计算圆形面积
# 计算圆形周长
from math import pi
class Circle:
def __init__(self,r):
self.r=r
def area(self):
return pi * self.r ** 2
def perimeter(self):
return pi * self.r * 2
c=Circle(5)
print(c.r)
print(c.area())
print(c.perimeter())
c.r=10
print(c.r)
print(c.area())
print(c.perimeter())
'''
5
78.53981633974483
31.41592653589793
10
314.1592653589793
62.83185307179586
'''
# 定义一个用户类,用户名和密码是这个类的属性,实例化两个用户,分别有不同的用户名和密码
#登录成功之后才创建用户对象
#设计一个方法修改密码
import os
def login(name,passwd,filepath='userinfo'):
with open(filepath,encoding='utf-8')as f:
for line in f:
user,pwd=line.strip().split('|')
if user==name and pwd==passwd:
return True
else:
return False
class User:
def __init__(self,username,password):
self.user=username
self.pwd=password
def change_pwd(self):
oldpwd=input('请输入原密码')
newpwd=input('请输入新密码')
with open('userinfo',encoding='utf-8')as f1,open('userinfo.bak',mode='w',encoding='utf-8')as f2:
for line in f1:
username,password=line.strip().split('|')
if username==self.user and password==oldpwd:
line='%s|%s\n'%(username,newpwd)
f2.write(line)
os.remove('userinfo')
os.rename('userinfo.bak','userinfo')
name=input('请输入用户名')
passwd=input('请输入密码')
ret=login(name,passwd)
if ret:
print('登录成功')
obj=User(name,passwd)
res=obj.change_pwd()
if res:print('修改成功')
今日内容
计算器I
#计算两个数的乘法或除法
def mul_div(exp):
#'3*4','5/6'
if '*' in exp:
a,b=exp.split('*')
return float(a) * float(b)
if '/' in exp:
a, b = exp.split('/')
return float(a) / float(b)
#计算表达式中的所有乘除法
import re
# exp='1+3*4*5/6'
def remove_muldiv(exp):
while True:
ret=re.search('\d+(\.\d+)?[*/]-?\d+(\.\d+)?',exp)
if ret:
son_exp=ret.group()
print([son_exp])
res=mul_div(son_exp)
print(res)
exp=exp.replace(son_exp,str(res))
print('-->',exp) #1+12.0*5/6
else:
break
return exp
ret=remove_muldiv('1+3*4*5/6')
print(ret)
python里的大问题
知道类,知道这个类有什么属性xxxx,有了对象才知道具体的值。
数据类型相关
python中一切皆对象,对象的类型就是类
在class中:
- 变量的定义叫静态变量/静态属性,存储在类的命名空间
- 函数的定义叫绑定方法,存储在类的命名空间
面向对象的命名空间:
- 对象中的变量只属于对象本身,每个对象有属于自己的空间来存储对象的变量
- 当使用对象名去调用某一个属性,会优先在自己的空间中寻找,找不到再去对应的类中寻找,再找不到才报错
- 对于类来说,类中的变量,所有对象都可以读取
- 所有和静态变量相关的增删改查都应用类名处理,而不是对象名直接修改。
组合:
- 一个类的对象,是另一个类对象的属性
今日总结
计算器I
组合
面向对象的命名空间
明日学习
继承等
代码总行数2442+96=2538行
python23day的更多相关文章
随机推荐
- 【LeetCode】290. Word Pattern 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...
- 1109 01组成的N的倍数
1109 01组成的N的倍数 基准时间限制:1 秒 空间限制:131072 KB 给定一个自然数N,找出一个M,使得M > 0且M是N的倍数,并且M的10进制表示只包含0或1.求最小的M. ...
- [算法笔记-题解]问题 D: 习题4-4 三个整数求最大值
问题 D: 习题4-4 三个整数求最大值 [命题人 : 外部导入] 时间限制 : 1.000 sec 内存限制 : 12 MB 题目描述 有3个整数a, b, c,由键盘输入,输出其中最大的数. 输入 ...
- [opencv]图像预处理方案及方式
像识别中,图像质量的好坏直接影响识别算法的设计与效果精度,那么除了能在算法上的优化外,预处理技术在整个项目中占有很重要的因素,然而人们往往忽略这一点. 图像预处理,将每一个文字图像分检出来交给识别模块 ...
- JavaScript实现简单的打字游戏
完整项目下载:https://download.csdn.net/download/weixin_44893902/13131694 演示地址:https://url_777.gitee.io/typ ...
- iNeuOS工业互联网操作系统,增加DTU与平台实时交互的应用场景
目 录 1. 概述... 2 2. 平台演示... 2 3. 硬件设置... 2 4. 应用过程... 3 1. 概述 DTU向下连接硬件传感器 ...
- Linux配置yum源(离线和在线)
配置yum源有2种方法,一种是离线yum源,另外一种是在线yum源. 一.离线yum源,基于安装光盘提供的安装仓库. 建立一个属于仓库文件夹 mkdir /media/zidong cd /media ...
- 线性基(Linear Basis)学习笔记
前言 我看网络上没有什么非常系统的教学,可能是我太菜了吧,现在才学,做个记录给自己看. 简略介绍 一个数集能两两异或,能表出许多新的数. 线性基是一个集合,能够在记录最少的数的基础上,表示出一个等价的 ...
- mysql语句2-单表查询
mysql 查询以及多表查询 以下所有表格样例都采用下边这个表格 mysql> select * from benet; +------+------+----------+ | id | ...
- html基础 表格的相关属性使用
1.1表格的基本标签 语法结构:<table> /*整体包裹部分,包裹多个tr */ <tr> /* 表格的每一个行,包裹td */ <td></td> ...