内容回顾

面向对象

  • 类:是具有相同属性和相似功能的一类事物
  • 对象/实例:具体的,一类可以有多个对象
  • 实例化

练习

# 定义一个圆形类,半径是这个圆的属性,实例化一个半径为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的更多相关文章

随机推荐

  1. 【LeetCode】62. Unique Paths 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址:https://leetcode.com/problems/unique-pa ...

  2. 【LeetCode】858. Mirror Reflection 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...

  3. 【LeetCode】319. Bulb Switcher 解题报告(Python)

    [LeetCode]319. Bulb Switcher 解题报告(Python) 标签(空格分隔): LeetCode 题目地址:https://leetcode.com/problems/bulb ...

  4. 【LeetCode】662. Maximum Width of Binary Tree 解题报告(Python)

    [LeetCode]662. Maximum Width of Binary Tree 解题报告(Python) 标签(空格分隔): LeetCode 题目地址:https://leetcode.co ...

  5. Frp内网穿透搭建,家庭主机对外提供接口,支持ssh访问

    Frp内网穿透搭建,家庭主机对外提供接口,支持ssh访问 1.使用场景: 需求1.家中服务器 ubuntu 主机,跑接口服务,需要对外暴漏, 需求2.同时需要在外网ssh远程 ​ 关键词: frp内网 ...

  6. 低成本CH7511芯片方案|CH7511电路设计参考|CS5211替代CH7511

    CH7511是主要用于设计eDP转LVDS转换器,怎么样设计一款低成本低BOM简单的DP转LVDS的转接设置,目前有一款可以替代兼容CH7511的方案电路,并且其设计电路整体BOM成本较低,并且设计简 ...

  7. 编写Java程序,现要求使用 dom4j 解析 city.xml 文档,实现省份及对应城市的联动特效,效果如图所示

    查看本章节 查看作业目录 需求说明: 现要求使用 dom4j 解析 city.xml 文档,实现省份及对应城市的联动特效,效果如图所示 实现思路: 创建解析 XML 文档类 ParseXML 和窗体类 ...

  8. 从0开始手把手带你入门Vue3-全网最全(1.1w字)

    天命不足畏,祖宗不足法. --王安石 前言 本文并非标题党,而是实实在在的硬核文章,如果有想要学习Vue3的网友,可以大致的浏览一下本文,总体来说本篇博客涵盖了Vue3中绝大部分内容,包含常用的Com ...

  9. 三角网格上的寻路算法Part.2—A*算法

    背景 继上一篇三角网格Dijkstra寻路算法之后,本篇将继续介绍一种更加智能,更具效率的寻路算法-A*算法,本文将首先介绍该算法的思想原理,再通过对比来说明二者之间的相同与不同之处,然后采用类似Di ...

  10. FastAPI快速查阅

    官方文档主要侧重点是循序渐进地学习FastAPI, 不利于有其他框架使用经验的人快速查阅 故本文与官方文档不一样, 并补充了一些官方文档没有的内容 安装 包括安装uvicorn $pip instal ...