Python学习笔记

发布于:2024-10-15 ⋅ 阅读:(45) ⋅ 点赞:(0)

一、基础语法

1、输出语句

print ("你好!!!")
// 字符串连接
print("神说" + "要有" + "光" + "!")

// 单双引号转义,注意引号配对,还可以使用以下语句进行转义
// \为转义符
print("He said \"Let\'s go!\"")

// 换行,换行符“\n”
print("神说:\n没有人一生下来就会的!")

// 三引号跨行字符串
print('''接受神的指引,
         去往有光的地方!''')

2、变量

变量:用来储存值的(先定义,再使用),可变的量

my_love = "123456789"
print(my_love)

变量的命名规则:

        由文字、数字、下划线( _ )组成

        不能有空格,不能由数字开头

        (尽量用英文,不要用拼音)

        大小写敏感,不能占用关键字

下划线命名法

        字母全部小写

        不同单词用下划线分割(user_age)

驼峰命名法

        单词用首字母大写分隔(UserAge)

3、数学运算

加(+)、减(-)、乘(*)、除(/)、地板除(//)只得整数结果、求余(%)

其他运算的实现——使用 math 库

// 平方的实现
math.pow(x,2)
x ** 2
// 导入 math 库
import math

// 导入math库,并更名为mt
import math as mt

4、注释

// 单行注释

# 这是Python中的单行注释

// 多行注释(三引号)

"""
    这是
    多行
    注释
"""

5、数据类型

字符串类型(str)
    "字符串"
    len("123")——求串长

整形(int)

布尔类型(bool)
    值只有"True"、"False"两种

空值类型(NoneType)
    其值是none,完全没有值

type(),返回数据的类型

 6、输入

input() —— 输入语句
    user_age = input("请输入你的名字:")
// 计算 BMI = 体重 / ( 身高 ** 2)
user_weight = float(input("请输入您的体重(单位:kg):"))
user_height = float(input("请输入您的身高(单位:m):"))
user_bmi = float(user_weight / (user_height ** 2))
print("经过计算,您的BMI为:" + str(user_bmi))

7、条件语句

// 等于
    ==

// 大于等于
    >=

// 小于等于
    <=

// 不等于
    !=
// if语句
if [条件]:
    语句
else:
    语句

// if-elif
if [条件]:
    语句
elif [条件]
    语句
else:
    语句

8、逻辑运算

与 and
或 or
非 not

// x 大于 5 且 x 小于 10
x > 5 and x < 10

// x 大于 5 或 x 小于 3
x > 5 or x < 3

// 优先级
not > and > or

9、列表

// 列表名 = [参数]
my_list = ["熊大","熊二","光头强"]

// 向列表中加入一个元素
my_list.append("黑大帅")

// 列表删除元素
my_list.remove("熊大")

// 列表可以存放不同类型的元素

// 打印列表中的最大值
print(max(my_list))

// 打印列表中的最小值
print(min(my_list))

// 打印排序好的列表
print(sorted(my_list))

10、字典

字典存储键值对的数据结构 key:value (键 : 值)

'''
    做一个简单的电话本,记录每一个人的电话
'''
contacts = {"小明":"123456789",
            "小花":"123456456",
            "小石":"123123123"}
print(contacts)

contacts["小花"] = "147258369"
print(contacts)

# len() ——函数可以查看字典中有多少键值对

# 字典名.keys()        返回所有键
# 字典名.values()      返回所有值
# 字典名.items()       返回所有键值对

dict_list = {"1":"1"}
dict_list["2"] = "2"
dict_list["3"] = "3"
dict_list["4"] = "4"
dict_list["5"] = "5"
dict_list["6"] = "6"
dict_list["7"] = "7"
dict_list["8"] = "8"

number = input("请您输入您想检索的词条:")
if number in dict_list:
    print("您想检查的词条在字典里!")
    print(dict_list[number])
else:
    print("您想检索的词条不在字典里!")

print("当前字典中共有" + str(len(dict_list)) + "条数据。")

11、循环结构

// for循环进行迭代

for 变量名 in 可迭代对象:
    # 语句
    # ...
// while() 循环

while 条件:
    # 语句

for循环:有明确循环对象或次数

while循环:循环次数未知

# 根据用户输入,计算平均值,用户输入q,表示输入结束
user_in= input("请输入一个数(输入q,结束输入):")
total = 0
fre = 0
while user_in != "q":
    num = float(user_in)
    total = total + num
    fre += 1
    user_in = input("请输入一个数(输入q,结束输入):")
if fre == 0:
    avl = 0
else:
    avl = total/fre
print("平均值为:" + str(avl))

12、格式化字符串

# format方法
message_content = """
    律回春渐,新元肇启。
    新岁甫至,福气东来。
    金{current_year}贺岁,欢乐祥瑞。
    金{current_year}敲门,五福临门。
    给{receiver_name}及家人拜年啦!
    新春快乐,{current_year}年大吉!
""".format(current_year = year,
           receiver_name = name)

 # f-字符串
 name = "龙"
 year = "2024"
 message_content = f"""
    律回春渐,新元肇启。
    新岁甫至,福气东来。
    金{year}贺岁,欢乐祥瑞。
    金{year}敲门,五福临门。
    给{name}及家人拜年啦!
    新春快乐,{year}年大吉!
"""

13、函数

函数定义时,不会执行函数中的内容,在调用函数时,才会执行函数中的代码

# 函数定义 

def [函数名]:
    # 函数体
"""
    写一个函数,输入扇形的圆心角和半径,输出扇形的面积
"""

def calculate_sector(central_angle, radius):
    sector_area = central_angle / 360 * 3.14 * radius ** 2
    print(f"此扇形的面积为:{sector_area:.2f}")

central_angle = float(input("请输入扇形的圆心角:"))
radius = float(input("请输入扇形半径:"))
calculate_sector(central_angle, radius)

"""
    写一个计算BMI的函数,函数名为 calculate_BMI
    1、可以计算任意体重和身高的BMI值
    2、执行过程中打印一句话:”您的BMI分类为:xx“
    3、返回计算出的BMI值
    
    BMI = 体重 / (身高 ** 2)
    
    BMI分类:
    偏瘦:BMI <= 18.5
    正常:18.5 < BMI <= 25
    偏胖:25 < BMI <= 30
    肥胖:30 < BMI
"""

def calculate_BMI(weight, height):
    BMI = weight / height ** 2
    if BMI < 18.5:
        print("您的BMI分类为:偏瘦!")
    elif BMI < 25:
        print("您的BMI分类为:正常!")
    elif BMI < 30:
        print("您的BMI分类为:偏胖")
    else:
        print("您的BMI分类为:肥胖")
    return BMI

height = float(input("请输入您的身高(单位:m):"))
weight = float(input("请输入您的体重(单位:kg):"))
BMI = calculate_BMI(weight, height)
print("您的BMI指数为:" + str(BMI))

14、引入模块

# 全部引用
import statistics

# 引入部分函数 
from statistics import median, mean

# 全部引用
from statistics import *

15、面向对象编程

面向过程编程:

        将程序按步骤分解编程

面向对象编程:

        考虑对象的性质,定义类,再创建对象实例

        属性(attribute)、方法(method)

        属性:类里面的性质

        方法:类里面的函数

面向对象编程的特点:封装        继承        多态

16、类

创建对象

class [对象名]:

        对象属性

Pascal命名法:

        用首字母大写来分隔单词

构造方法:

        类有特殊的方法:构造方法

如:

class A:

        def __init__(self, 参数):

        # 构造函数的代码

'''
    创建一个学生类
    要求:
    1、属性包含学生姓名、学号,以及学生的语数英三门的成绩
    2、能够设置学生某科的成绩
    3、能够打印出该学生的所有科目的成绩
'''

# 定义类
class Student:
    # 构造方法,第一个参数为 self 用于绑定参数和对象
    def __init__(self, name, student_id):
        self.name = name
        self.student_id = student_id
        self.grades = {"语文":0, "数学":0, "英语":0}

    def set_grade(self, course, grade):
        if course in self.grades:
            self.grades[course] = grade

    def print_grades(self):
        print(f"学生{self.name}(学号:{self.student_id})的成绩为:")
        for course in self.grades:
            print(f"{course}: {self.grades[course]}分")

hao = Student("hao", "202012190106")
hao.set_grade("语文", 100)
hao.set_grade("数学", 100)
hao.print_grades()

 17、继承

子类会继承父类的属性和方法(共享的属性和方法)

'''
    类的继承练习:
    人力系统
    员工分为两类:全职员工:FullTimeEmployee、兼职员工:PartTimeEmployee
    全职员工和兼职员工都有”姓名 name“、”工号 id“属性
    都具备”打印信息 print_info“(打印姓名、工号)方法
    全职有”月薪 monthly_salary“属性
    兼职有”日薪 daily_salary“属性,”每月工作天数 work_days“属性
    全职和兼职都有”计算月薪 calculate_monthly_pay“的方法,但具体过程不一样
'''

# 员工类
class Employee:
    def __init__(self, id, name):
        self.id = id
        self.name = name

    def print_info(self):
        print(f"员工姓名:{self.name},工号为:{self.id}")

# 全职员工类,全职员工类继承自员工类
class FullTimeEmployee(Employee):
    def __init__(self, name , id, monthly_salary):
        # 继承自父类的姓名、工号属性
        super().__init__(name, id)
        self.monthly_salary = monthly_salary

    def calculate_monthly_pay(self):
        return 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

    def calculate_monthly_pay(self):
        return self.daily_salary * self.work_days

zhangsan = FullTimeEmployee('zhangsan', '123123', 12000)
lisi = PartTimeEmployee('lisi', '123456', 666, 30)
zhangsan.print_info()
print("员工的工资为:" + str(lisi.calculate_monthly_pay()))

17、对文件操作

分清文件的绝对路径和相对路径

        open()——打开文件操作,可用绝对路径,也能用相对路径

        模式:

                r——可读

                w——可写

                a——附加内容

                r+ ——支持读写文件

                a 和 w 模式——如果文件名不存在,会直接创建一个该文件

                encoding——编码方式,一般为”utf-8“

        read()——读文件函数

        readline()——读一行,打印一行

        readlines()——读取全部文件内容,并把每一行作为列表元素返回

       

        close()——关闭文件,释放资源

        使用with

# 缩进结束,文件自动关闭
with open("./data.txt")as f:
    print(f.read())

写入文件:

        with open("./data.txt", "w", encoding="utf-8") as f:

                f.write("内容")

18、异常处理

try语句捕捉异常,符合逻辑的第一个分支会执行

        try:

                # 可能异常的代码

        except ValueError:

                # 出现异常,你想执行的操作

        finally:

                # 该语句一定会执行

19、测试

assert —— 断言

        一般会用测试库,如:unittest

创建测试文件夹:测试的每个方法,都要以 test_ 开头

20、高阶函数和匿名函数

高阶函数

高阶函数的参数是函数,作为参数的函数,以其名为参数,不用加括号

匿名函数

以lambda为匿名函数的函数名

calculate_and_print(7, lambda num:num * 5, print_with_vertical_bar)

# lambda num1, num2: num1 + num2
# 关键字  函数参数     函数返回形式

# 只适用于简单的问题