Python

目录

一、Python基础

语言分类

一些小知识


在cmd中运行python代码

快捷键

Debug

打断点+Debug运行

常用设置

更改字体

文件操作

单行注释和多行注释


Python中的3种波浪线和PEP8


变量(内存地址的别名)


命名规范


建议性命名

Python中变量的定义使用的是下划线连接

变量的数据类型

数字类型

非数字类型

type()函数——可以获取变量的数据类型

# 整型
age = 11
print(type(age))
# 浮点型
height = 3.14
print(type(height))
# 布尔型
isGirl = True
print(type(isGirl))
# 字符型
name = "ann"
print(type(name))

输入

使用input()函数——最终保存到变量中的数据类型一定是str

类型转换

age = input("请输入年龄:")
print(type(age), age)
# 进行类型转换
age1 = int(age)
print(type(age), age)
print(type(age1), age1)

格式化输出


%.2f保留两位小数
%3d整数一共占3位
%d%%显示为90%

name = '小米'
age = 12
height = 157.3
Id = 1
num = 90
print("我的名字是%s" % name)
print("我的年龄是%d" % age)
print("我的身高是%f" % height)
print("我的名字是%s,我的年龄是%d,我的身高是%.2f" % (name, age, height))  # %.2f保留两位小数
print("我的id是%03d" % Id)  # %3d整数一共占3位
print("及格率是%d%%" % num)  # %d%%显示为90%

f-字符串的格式化方法

name = '小米'
age = 12
height = 157.3
Id = 1
num = 90
print(f'我的名字是{name},我的年龄是{age},我的身高是{height},我的id是{Id},\n及格率是{num}')

字符串.format()模式

name = '小米'
age = 12
height = 157.3
Id = 1
num = 90
print('我的名字是{},我的年龄是{},我的身高是{}cm,我的id是{},\n及格率是{}%'.format(name, age, height, Id, num))

运算符

算术运算符

比较运算符

逻辑运算符

二、流程控制结构

判断语句(if elif else)

if-else结构

user = input("输入用户名:")
psw = input("请输入密码:")
if user == 'admin' and psw == '123456':  # 一定要注意input获取的是str
    print(f'欢迎{user}登录')
else:
    print('登录信息错误')

if-elif-else结构

score = int(input("输入你的成绩:"))
if score >= 90:
    print('优')
elif score >= 80:
    print('良')
elif score >= 70:
    print('中')
elif score >= 60:
    print('差')
else:
    print('不及格')


如果只使用if-else

score = int(input("输入你的成绩:"))
if score >= 90:
    print('优')
if 80 <= score < 90:
    print('良')
if score >= 70 and score < 80:
    print('中')
if 60 <= score < 70:
    print('差')
else:
    print('不及格')

if嵌套

pwd = 123456
num = 1000
pwduser = int(input("请输入密码:"))
if pwduser == pwd:
    get_num = int(input("请输入取款金额:"))
    if get_num <= num:
        print(f'取款成功!账户余额为{num-get_num}')
    else:
        print('余额不足!')
else:
    print("密码错误!")

案例(出拳游戏)

import random
num = random.randint(1, 3)  # 电脑出拳
# 1-剪刀 2-石头 3-布
numuser = int(input('请输入你要出(1-剪刀 2-石头 3-布):'))
print(f'对方出的是{num}')
if (numuser == 1 and num == 3) or (numuser == 2 and num == 1) or (numuser == 3 and num == 2):
    print("你赢了!")
elif numuser == num:
    print('平局')
else:
    print('你输了')

循环

死循环和无限循环

案例(计算100以内偶数的和)

i = 0
sum = 0
while i < 101:
    sum += i
    i += 2
print(sum)

for 变量 in 容器



for 变量 in range(n)–做指定次数的循环



range()变形



continue和break

user_string = 'goodgirl'
for n in user_string:
    if n == 'i':
        continue
    print(n)

数据序列(容器)

字符串



在这里插入图片描述

下标(支持从右开始的负数标号)



切片

str1 = 'abcdefg'
# 获取abc
print(str1[0:3:1])
print(str1[0:3])  # 步长为1可以不写,最后一个冒号也不写
print(str1[:3])  # 开始为0,可以不写,但冒号必须有
# 获取efg
print(str1[4:7])
print(str1[4:])
print(str1[-3:7])
# 获取aceg
print(str1[0:7:2])
print(str1[::2])
# 获取全部字符串
print(str1[:])
# 获取全部字符串的逆序
print(str1[::-1])

字符串的查找方法——find

str_1 = "hello w
# 查找第一个to的位置    
num = str_1.find
print(num)      
# 查找第二个to的位置,从上一
num1 = str_1.fin
print(num1)     

字符串的替换方法——replace

注意:原来字符串没有发生变化

str1 = "hello world hello"
# 将第二个hell替换为HELLO
# 1.先将所有都替换为HELLO
str2 = str1.replace('hello', 'HELLO')
# 2.再将第一个的HEEL换回hello
str3 = str2.replace('HELLO', 'hello', 1)
print('str1:', str1)
print('str2:', str2)
print('str3:', str3)

字符串的拆分——split

str1 = "hello world and hello everyone"
# 按照空白字符,分割两次
list1 = str1.split(maxsplit=2)
# 按照hello分割
list2 = str1.split('hello')
print(list1)
print(list2)

字符串的链接——join



列表list

定义

  1. 类实例化(不经常用)

  2. 类型转换(将其他容器转换为list)

  3. 直接使用[ ](经常使用)

下标和切片

列表查找方法——index()

容器中是否存在——in

列表统计出现次数——count()

my_list = [1, 2, 2, 3, 5, 6]
# 直接my_list.index(4)会因为不存在报错
if my_list.count(4) > 0:
    num = my_list.index(4)
    print(num)
else:
    print("不存在")

if 4 in my_list:
    num1 = my_list.index(4)
    print(num1)
else:
    print("不存在!")

添加数据的方法

my_list = ['可乐']
print(my_list)
# 在列表后添加
my_list.append('雪碧')
print(my_list)
# 在指定位置添加
my_list.insert(1, 2)
print(my_list)
# 合并两个列表
list1 = ['芬达', '百事']
my_list.extend(list1)
print(my_list)

列表修改操作——列表[下标] = 数据

在这里插入图片描述

列表删除操作

my_list = [1, 3, 3, 4, 6, 8]
print(my_list)
# 删除最后一个数据
num = my_list.pop()
print(my_list)
print("删除的数据为:", num)
# 删除下标为1
my_list.pop(2)
print(my_list)
# 删除数据为4的数据
my_list.remove(6)
print(my_list)
# 清空
my_list.clear()
print(my_list)

列表逆置和复制——reverse() and copy()

逆置

my_list = [1, 3, 3, 4, 6, 8]
# 使用切片
my_list1 = my_list[::-1]
print(my_list)
print(my_list1)
# 使用reverse()
my_list.reverse()
print(my_list)

复制


列表排序——sort()

my_list = [1, 3, 3, 2, 16, 1]
my_list.sort()
print(my_list)
my_list.sort(reverse=True)
print(my_list)

列表嵌套

my_list = [[1, 3, 3, 2, 16, 1], ['李四', '12']]
print(len(my_list))
print(my_list[0])
print(my_list[0][0])
print(my_list[1][0][1])

# 给李四添加性别
my_list[1].append('女')
print(my_list[1])

列表去重(面试)

# 列表去重
my_list1 = [1, 2, 2, 1, 3]
my_list2 = []
for i in my_list1:
    if i in my_list2:   # my_list2.count(i) > 0
        continue    # pass
    else:
        my_list2.append(i)
print('去重前:', my_list1)
print('去重后:', my_list2)


2.

元组——tuple

定义

  1. 使用类实例化方法
  2. 直接定义

注意


字典——dict


添加和修改数据


删除数据——del


获得对应的数据——get

my_dict = {'name': '小红', 'age': 12, 'isMen': False, 'hobby': ['学习', '画画']}
# 获取'sex'
print(my_dict.get('sex'))
# 获取第二个爱好
print(my_dict.get('hobby')[1])
print(my_dict['hobby'][1])

字典的遍历

my_dict = {'name': '小红', 'age': 12, 'isMen': False, 'hobby': ['学习', '画画']}
# 遍历字典的键
for a in my_dict:
    print(a)
print('~~~~~~~~~~~~~')
for b in my_dict.keys():
    print(b)
print('~~~~~~~~~~~~~')
# 遍历字典的值
for c in my_dict.values():
    print(c)
print('~~~~~~~~~~~~~')
# 遍历键值对
for d,e in my_dict.items():
    print(d, e)

容器部分补充总结

函数

函数基础

函数的定义和调用——def

函数文档注释

函数参数

函数返回值



变量进阶

引用介绍



可变类型和不可变类型

面试题


交换两个变量的值和拆包

交换两个变量
  1. 常规方法引入第三个变量
  2. python独有
组包和拆包

# 组包
c = a, b
print(type(c), c)
# 拆包
c = a, b
print(a, b)
my_list = [1, 3, 4]
a, b, c = my_list
print(a, b, c)

局部变量和全局变量

局部变量

全局变量

函数进阶

函数返回多个数据值

def fun1(a, b):
    sum1 = a + b
    sum2 = a - b
    return sum1, sum2


result = fun1(1, 2)
print(result)
print(result[0], result[1])
# 拆包
x, y = result
print(x, y)

函数传参方式


缺省参数(默认参数)


多值参数(可变参数/不定长参数)


print函数



匿名函数(lambda很少使用)




# 定义一个匿名函数求两个数的乘积
fun1=lambda a,b: a*b
print(fun1(2,3))

# 定义一个匿名函数,参数为字典,返回字典中键为age的值
dict2 = {'name':'ann', 'age':'1'}
fun2=lambda dict1:dict1.get('age')  # dict['age']
print(fun2(dict2))


匿名函数作为函数参数——列表中的字典排序

列表的排序,默认是对列表中的数据进行比大小的,可以对数字类型和字符串进行比大小,但是对于字典来说,就不知道该怎么比大小,此时,我们需要使用sort 函数中的key这个参数,来指定字典比大小的方法key这个参数,需要传递—个函数,一般是匿名函数

面向对象(OOP)

类和对象

类的组成

类的抽象(类的设计)

面向对象基础语法

面向代码的步骤


案例:小猫爱吃鱼

需求:小猫爱吃鱼,小猫爱喝水

# 需求小猫爱吃鱼,小猫爱喝水
# 创建类
class Cat:
    def eat(self):
        print('小猫爱吃鱼!')
    def drink(self):
        print('小猫爱喝水!')
# 创建对象
blank_cat = Cat()
# 通过创建的对象调用类中的方法
blank_cat.eat()
blank_cat.drink()

self说明

属性的操作


魔法方法_init_方法的使用

魔法方法_str_方法的使用



魔法方法_del_方法的使用


案例

class People:
    def __init__(self, name, weight):
        self.name = name
        self.weight = weight

    def __str__(self):
        return f'{self.name}体重为{self.weight}公斤'

    def run(self):
        print('跑步')
        self.weight -= 0.5

    def eat(self):
        print('吃饭')
        self.weight += 1
xiaoming = People('小明',75.0)
print(xiaoming)
xiaoming.eat()
print(xiaoming)
xiaoming.run()
print(xiaoming)

封装案例——存放家具

class HouseItem:    # 家具类
    def __init__(self,name,area):
        self.name = name
        self.area = area

    def __str__(self):
        return f'{self.name}家具,占地{self.area}平方米'

class House:
    def __init__(self,name,area):
        self.name = name
        self.total_area = area
        self.free_area = area
        self.item_list = []
    def __str__(self):
        return f'{self.name}户型,总面积为{self.total_area},剩余面积为{self.free_area},家具有{self.item_list}'
    def add_item(self,item):
        if self.free_area >= item.area:
            self.item_list.append(item.name)
            self.free_area -= item.area
            print(f'{item.name}家具添加成功!!')
        else:
            print('剩余面积不足,需要换房子了!!')
# 创建家具对象
bed = HouseItem('席梦思',4)
chest = HouseItem('衣柜',2)
table = HouseItem('餐桌',1.5)
print(bed)
print(chest)
print(table)
# 创建房子对象
house = House('三室一厅',127)
house.add_item(bed)
print(house)

在这里插入图片描述

私有属性和私有方法

封装、继承、多态

面向对象三大特性

继承

案例


重写——覆盖和扩展

覆盖

扩展


多态

属性和方法

对象的划分

  1. 实例对象(实例)
  2. 类对象(类)

属性的划分

  1. 实例属性
  2. 类属性

练习

class Dog:
    # 定义类属性
    count = 0
    # 定义实例属性
    def __init__(self,name):
        self.name = name
        Dog.count += 1


print(Dog.count)
dog1 = Dog('coco')
dog2 = Dog('豆豆')
print(Dog.count)

方法的划分

  1. 实例方法(最常用)

  2. 类方法(会用)


  3. 静态方法(基本不用)

练习

异常、模块、文件操作

异常

模块和包

文件操作

UnitTest框架

UnitTest基本使用

UnitTest断言

参数化

生成HTML测试报告

相关推荐

  1. python

    2024-06-16 07:22:05       56 阅读
  2. python

    2024-06-16 07:22:05       57 阅读
  3. python

    2024-06-16 07:22:05       56 阅读
  4. python

    2024-06-16 07:22:05       43 阅读
  5. python

    2024-06-16 07:22:05       29 阅读
  6. <span style='color:red;'>python</span>

    python

    2024-06-16 07:22:05      28 阅读
  7. python

    2024-06-16 07:22:05       44 阅读
  8. <span style='color:red;'>Python</span>

    Python

    2024-06-16 07:22:05      28 阅读
  9. <span style='color:red;'>Python</span>

    Python

    2024-06-16 07:22:05      32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-16 07:22:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-16 07:22:05       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-16 07:22:05       82 阅读
  4. Python语言-面向对象

    2024-06-16 07:22:05       91 阅读

热门阅读

  1. 双指针【1】两数之和基础版 归并排序

    2024-06-16 07:22:05       29 阅读
  2. mybatis框架原理,组件,案例,优化,优缺点总结

    2024-06-16 07:22:05       31 阅读
  3. TPS、QPS、CPS、PV和UV

    2024-06-16 07:22:05       49 阅读
  4. 如何用蒙版制作玻璃划动效果

    2024-06-16 07:22:05       32 阅读
  5. Python知识点总结

    2024-06-16 07:22:05       37 阅读
  6. Redis

    Redis

    2024-06-16 07:22:05      35 阅读
  7. 数据结构之B树

    2024-06-16 07:22:05       31 阅读
  8. 华为Atlas 300I 推理卡显卡安装

    2024-06-16 07:22:05       28 阅读
  9. 数据分析的流程是啥样?

    2024-06-16 07:22:05       31 阅读
  10. RAG下的prompt编写探索

    2024-06-16 07:22:05       30 阅读
  11. merkle tree中文

    2024-06-16 07:22:05       34 阅读