【python】

引言

第一章

1 基础知识

1.1 注解

image
单行注释 快捷键:ctrl + /

1.2 标识符

命名规则是Python中定义各种名字的时候的统一规范,具体如下:

  • 由数字、字母、下划线组成
  • 不能数字开头
  • 不能使用内置关键字
  • 严格区分大小写

命名习惯

  • 大驼峰:即每个单词首字母都大写,例如:MyName。
  • 小驼峰:第二个(含)以后的单词首字母大写,例如:myName。
  • 下划线:例如:my_name。

1.3 变量

数据类型

  • 数值
    • 整型 int
    • 浮点型 float
  • 布尔
    • 真 true
    • 假 false
  • 字符串 str
  • 列表 list
  • 元组 tuple
  • 集合 set
  • 字典 dict

检测数据类型方法 type() → 类似与java的 xxx.class

1.4 格式化符号

格式符号 转换说明
%s 字符串
%d 有符号的十进制整数
%f 浮点数
%c 字符
%u 无符号的十进制整数
%o 八进制整数
%x 十六进制整数(小写字母)
%X 十六进制整数(大写字母)
%e 科学计数法(小写'e')
%E 科学计数法(大写'E')
%g %f和%e的简写,根据数值大小自动选择%f或%e
%G %f和%E的简写,根据数值大小自动选择%f或%E
%n 计数器,不输出,但更新当前已输出的字符数量
%% 字面量的百分号(%)

1.5 转义字符

  • \n:换行。
  • \t:制表符,一个tab键(4个空格)的距离。

1.6 键盘输入

input("信息")
等待输入变量
java中类似写法

        Scanner scanner = new Scanner(System.in);
        String str = scanner.next();

1.7 转换数据类型

函数 说明
int(x [,base ]) x转换为一个整数,可选base为基数(2-36)
float(x) x转换为一个浮点数
complex(real [,imag ]) 创建一个复数,real为实部,imag为虚部(可选)
str(x) 将对象x转换为字符串
repr(x) 将对象x转换为表达式字符串,通常用于调试
eval(str) 计算字符串中的有效Python表达式,并返回结果
tuple(s) 将序列s转换为一个元组
list(s) 将序列s转换为一个列表
chr(x) 将一个整数x转换为对应的Unicode字符
ord(x) 将一个字符x转换为其ASCII或Unicode整数值
hex(x) 将一个整数x转换为一个十六进制字符串
oct(x) 将一个整数x转换为一个八进制字符串
bin(x) 将一个整数x转换为一个二进制字符串

1.8 运算符

1.8.1 算数运算符

这里列出比较特殊的

运算符 描述 实例
/ 10 / 2 = 5
// 整除 9 // 4 = 2
% 取余 9 % 4 = 1
** 指数 2 ** 3 = 2 * 2 * 2 = 8

1.8.2 逻辑运算符

运算符 逻辑表达式 描述 实例
and x and y 布尔"与":如果 x 为 False,则 x and y 返回 False,否则它返回 y 的值。 True and False,返回 False。
or x or y 布尔"或":如果 x 是 True,则返回 True,否则返回 y 的值。 False or True,返回 True。
not not x 布尔"非":如果 x 为 True,返回 False。如果 x 为 False,返回 True。 not True 返回 False,not False 返回 True

2 基础语法

2.1 判断语句

if 条件:
    条件成立执行的代码1
    条件成立执行的代码2
    ......
#---------------------
if 条件:
    条件成立执行的代码1
    条件成立执行的代码2
    ......
else:
    条件不成立执行的代码1
    条件不成立执行的代码2
    ......
#---------------------
if 条件:
    条件成立执行的代码1
    条件成立执行的代码2
    ......
elif 条件:
    条件成立执行的代码1
    条件成立执行的代码2
    ......
else:
    条件不成立执行的代码1
    条件不成立执行的代码2
    ......

2.2 三目运算符

值1 if 条件 else 值2

2.3 循环

2.3.1 普通循环

while 条件:
    条件成立重复执行的代码1
    条件成立重复执行的代码2
    ......
#---------------------
# while循环嵌套
while 条件1:
    条件1成立执行的代码
    ......
    while 条件2:
        条件2成立执行的代码
        ......
#---------------------
for 临时变量 in 序列:
    重复执行的代码1
    重复执行的代码2
    ......
#---------------------

2.3.2 结合

  • 与else结合
while 条件:
    条件成立重复执行的代码
else:
    循环正常结束之后要执行的代码
#---------------------
for 临时变量 in 序列:
    重复执行的代码
    ...
else:
    循环正常结束之后要执行的代码
  • 与break:终止循环不会执行else下方缩进的代码
  • 与continue:退出循环的方式执行else下方缩进的代码

2.4 切片

切片是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作。

  • 不包含结束位置下标对应的数据, 正负整数均可
  • 步长是选取间隔,正负整数均可,默认步长为1
name = "abcdefg"

print(name[2:5:1])  # cde
print(name[2:5])  # cde
print(name[:5])  # abcde
print(name[1:])  # bcdefg
print(name[:])  # abcdefg
print(name[::2])  # aceg
print(name[:-1])  # abcdef, 负1表示倒数第一个数据
print(name[-4:-1])  # def
print(name[::-1])  # gfedcba

2.5 字符串处理函数

  • replace():替换
    • 字符串序列.replace(旧子串, 新子串, 替换次数)
    • 替换次数小于旧子串出现次数时,替换已经满次数,再遇到不会再替换
  • split():按照指定字符分割字符串
    • 字符串序列.split(分割字符, num)
    • num表示的是分割字符出现的次数,即将来返回数据个数为num+1个
    • num设置的效果,只有当num小于分割字符出现个数时会出现不同,如果已经分割num次(即出现num+1个子串),则再遇到分割字符也不会再分割。
  • join():用一个字符或子串合并字符串,即是将多个字符串合并为一个新的字符串
    • 字符或子串.join(多字符串组成的序列)
  • capitalize():将字符串第一个字符转换成大写
    • 字符串.capitalize()
  • `title()``:将字符串每个单词首字母转换成大写
    • 字符串.title()
  • lower():将字符串中大写转小写
    • 字符串.lower()
  • upper():将字符串中小写转大写。
    • 字符串.upper()

2.6 字符串判断函数

  • startswith():检查字符串是否是以指定子串开头,是则返回 True,否则返回 False。如果设置开始和结束位置下标,则在指定范围内检查
    • 字符串序列.startswith(子串)
    • 字符串序列.startswith(子串, 开始位置下标, 结束位置下标)
  • endswith()::检查字符串是否是以指定子串结尾,是则返回 True,否则返回 False。如果设置开始和结束位置下标,则在指定范围内检查
    • 字符串序列.endswith(子串)
    • 字符串序列.endswith(子串, 开始位置下标, 结束位置下标)
  • isalpha():如果字符串至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False
    • 字符串.isalpha()
  • isdigit():如果字符串只包含数字则返回 True 否则返回 False
    • 字符串.isdigit()
  • isalnum():如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False
    • 字符串.isalnum()
  • isspace():如果字符串中只包含空白,则返回 True,否则返回 False
    • 字符串.isspace()

2.7 列表

列表可以一次性存储多个数据,且可以为不同数据类型

2.7.1 基础函数

  • index():返回指定数据所在位置的下标
    • 列表序列.index(数据, 开始位置下标, 结束位置下标)
  • count():统计指定数据在当前列表中出现的次数
    • 列表序列.count()
  • len():访问列表长度,即列表中数据的个数
    • 列表序列.len()

2.7.2 判断

  • in:判断指定数据在某个列表序列,如果在返回True,否则返回False
    • '字符串' in 列表序列
  • not in:判断指定数据不在某个列表序列,如果不在返回True,否则返回False
    • '字符串' not in 列表序列

2.7.3 增删改

  • append():列表结尾追加数据
    • 列表序列.append(数据)
  • extend():列表结尾追加数据,如果数据是一个序列,则将这个序列的数据逐一添加到列表
    • 列表序列.extend(数据)
    • 单个数据
#单个数据
name_list = ['Tom', 'Lily', 'Rose']
name_list.extend('xiaoming')
# 结果:['Tom', 'Lily', 'Rose', 'x', 'i', 'a', 'o', 'm', 'i', 'n', 'g']

#多个数据
name_list = ['Tom', 'Lily', 'Rose']
name_list.extend(['xiaoming', 'xiaohong'])
# 结果:['Tom', 'Lily', 'Rose', 'xiaoming', 'xiaohong']
  • insert():指定位置新增数据
    • 列表序列.insert(位置下标, 数据)
  • del:删除
    • del XX
    • del 列表序列
    • del 列表序列[index]
  • pop():删除指定下标的数据(默认为最后一个),并返回该数据
    • 列表序列.pop(下标)
  • remove():移除列表中某个数据的第一个匹配项
    • 列表序列.remove(数据)
  • clear():清空列表
  • reverse():逆置
  • sort():排序
    • 列表序列.sort( key=None, reverse=False)
    • 注意:reverse表示排序规则,reverse = True 降序, reverse = False 升序(默认)
  • copy():复制

2.7.4 列表嵌套

list = [['x','x','x'],['y','y','y'],['z','z','z']]
list[2][1]

2.8 元组

  • 一个元组可以存储多个数据,元组内的数据是不能修改的。
  • 元组特点:定义元组使用(),且,隔开各个数据,数据可以是不同的数据类型。
  • 注意:如果定义的元组只有一个数据,那么这个数据后面也好添加逗号,否则数据类型为唯一的这个数据的数据类型
    • t2 = (10,):tuple类型
    • t3 = (20):int类型
    • t3 = ('hello'):str类型

2.8.1 查询

  • 按下标查找数据
    • tuple1[0]
  • 查找某个数据,如果数据存在返回对应的下标,否则报错,语法和列表、字符串的index方法相同
    • tuple1.index('aa')
  • 统计某个数据在当前元组出现的次数
    • tuple1.count('bb')
  • 统计元组中数据的个数
    • len(tuple1)
  • 注意:元组内的直接数据如果修改则立即报错
  • 但是如果元组里面有列表,修改列表里面的数据则是支持的,故自觉很重要。

2.9 字典

  • 字典为可变类型。可看作java的map集合。
  • 符号{}
  • 数据 键值对
  • 分隔 ,
# 有数据字典
dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
# 空字典
dict2 = {}
dict3 = dict()
  • 增/改
    • dict['key'] = 'value':如果key存在,则修改value,如果key不存在,则新增键值对
    • del() / del:删除字典或删除字典中指定键值对
      • del dict['gender'] dict.del('gender')
    • clear():清空字典3
    • dict['key']:如果当前查找的key存在,则返回对应的值;否则则报错
    • dict.get(key, 默认值):如果当前查找的key不存在则返回第二个参数(默认值),如果省略第二个参数,则返回None
    • dict1.keys():所有key的集合dict_keys(['key1', 'key2', 'key3',...])
    • dict.values():同上,所有value的集合dict_values(['value1', value2, 'vaule3',...]),可以不同类型,这里value2是整数型
    • dict.items():所有元素的集合dict_items([('key1', 'value1'), ('key2', value2), ('key3', 'value3'),...])

2.10 集合

  • 创建集合{}set()
  • 创建空集合 只能使用 set(),因为{}用于创建空字典
  • 可以去掉重复数据
  • 集合数据是无序的,因此不支持下标

2.10.1 增加数据

  • add()
    • 因为集合有去重功能,所以,当向集合追加已存在数据时,则不进行任何操作。
  • update()
    • 追加的数据是序列
    • s1.update(100) # 报错
    • s1.update([100, 200])
    • s1.update('abc')
  • remove()
    • 删除集合中的指定数据,如果数据不存在则报错。
  • discard()
    • 删除集合中的指定数据,如果数据不存在也不会报错。
  • pop()
    • 随机删除集合中的某个数据,并返回这个数据
  • in
  • not in

2.11 推导式

2.11.1 列表生成式

  • 带if的列表推导式
    • list1 = [i for i in range(0, 10, 2)]
    • list1 = [i for i in range(10) if i % 2 == 0]
  • [(1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
    • list1 = [(i, j) for i in range(1, 3) for j in range(3)]

2.11.2 字典推导式

  • 创建一个字典:字典key是1-5数字,value是这个数字的2次方
    • dict1 = {i: i**2 for i in range(1, 5)}
  • 将两个列表合并为一个字典
    • list1 = ['name', 'age', 'gender']
    • list2 = ['Tom', 20, 'man']
    • dict1 = {list1[i]: list2[i] for i in range(len(list1))}
  • 提取字典中目标数据:提取上述电脑数量大于等于200的字典数据
    • counts = {'MBP': 268, 'HP': 125, 'DELL': 201, 'Lenovo': 199, 'acer': 99}
    • count1 = {key: value for key, value in counts.items() if value >= 200}

2.11.3 集合推导式

  • 创建一个集合,数据为下方列表的2次方
    • list1 = [1, 1, 2]
    • set1 = {i ** 2 for i in list1}
    • # set1 = {1, 4}

作者联系方式
QQ : 2219880752
微信 : 15642367151
欢迎各位朋友交流讨论~

posted @ 2024-08-12 14:47  沫漓fighting  阅读(31)  评论(0)    收藏  举报