1. 函数
#定义函数
"""
def 函数名(参数):
...
return **
"""
def calc_BMI(weight,height):
BMI=weight/(height**2)
if BMI<=18.5:
category="偏瘦"
elif BMI<=25:
category="正常"
elif BMI<=30:
category="偏胖"
else:
category="肥胖"
print(f"您的BMI分类为:{category}")
return BMI
result=calc_BMI(46,1.55) #height单位是米
print(result)
2、引入模块
引入官方的模块:
#引入模块
#法一:
import statistics
#引入整个模块,引用函数时需要加上模块名
print(statistics.median([1,2,3]))
#法二:
from statistics import median #从哪里引进什么
#引入模块的部分函数,引用时不需要加上函数名
print(median([1.0,2.0,3.0]))
#法三:
from statistics import *
#引入整个模块(*),引用时不需要加上函数名
#不推荐使用,因为这样可能和别的模块的同名函数产生冲突混淆
print(median([1,2.0,3.0]))
引入第三方库的模块:
#引入第三方库的模块
"""
第一步:下载安装(相当于把家具从家具店拖到自家仓库)
而引入,则是把家具从自家仓库里拿出使用
(常用的函数被说明为内置函数,已在家中,则不需要引入,可以直接使用)
"""
"""
pypi.org可以对第三方库进行搜索(python package index软件包索引)
"""
"""
在终端输入pip install akshare(pip install **为安装指令)
"""
"""
第二步:引入
"""
import akshare
print(akshare.get_cffex_daily("20220222"))
tips:
再长按ctrl,点击函数名或模块名,可以查看它的解释
3、类与对象
面向对象编程(oop,object oriented programming)
class CuteCat: #类名用驼峰命名法
#构造函数,def __init__(self,参数):
def __init__(self,cat_name,cat_age,cat_color):
self.name=cat_name #要加self,防止和全局变量混淆
self.age=cat_age
self.color=cat_color
#就是在构造函数中声明定义了类的数据成员(属性)
def speak(self):
print("喵"*self.age) #print("hello"*10),可以在括号内直接乘以打印次数
def think(self,content):
print(f"小猫{self.name}在思考{content}...")
cat1=CuteCat("Jojo",2,"橙色")
print(f"小猫{cat1.name}的年龄是{cat1.age}岁,花色是{cat1.color}")
cat1.speak()
cat1.think("今晚吃什么")
#定义学生类
class Student:
def __init__(self,name,student_id):
self.name=name #self.name说明是绑定到对象身上的属性
self.student_id=student_id
self.grades={"语文":0,"数学":0,"英语":0} #成绩可以用字典来存储,均初始化为0
def set_grade(self,course,grade): #设置科目成绩->传两个参数:科目和成绩
if course in self.grades.keys(): #.keys()返回所有键
self.grades[course]=grade
def print_grades(self): #打印所有成绩
print(f"学生{self.name}(学号:{self.student_id})的成绩为: ")
for course in self.grades.keys(): #for course in self.grades: 则默认是遍历字典的键
print(f"{course}: {self.grades[course]}分")
zeng=Student("小曾","202330452242")
zeng.set_grade("语文",100)
zeng.set_grade("数学",100)
zeng.set_grade("英语",100)
zeng.print_grades()
继承:
#人力系统
class Employee: #基类
def __init__(self,name,id): #构造函数
self.name=name
self.id=id
self.salary=0
def print_info(self): #打印信息
print(f"员工名字:{self.name},工号:{self.id},工资{self.salary}")
class FullTimeEmployee(Employee): #(基类名字)表示继承基类
def __init__(self,name,id,monthly_salary):
super().__init__(name,id) # super().__init__(参数) 表示调用基类的构造函数
self.monthly_salary=monthly_salary
self.salary=self.monthly_salary
class PartTimeEmployee(Employee):
def __init__(self,name,id,daily_salary,work_days):
super().__init__(name, id)
self.daily_salary=daily_salary
self.work_days=work_days
self.salary=self.daily_salary*self.work_days
zhangsan=FullTimeEmployee("张三","1001",6000)
lisi=PartTimeEmployee("李四","1002",230,15)
zhangsan.print_info()
lisi.print_info()