1、变量

  • 变量是什么

    1. 变量用来标识数据
    2. 语法: 变量名 = 值(数据)
  • 变量名的命名规范

    1. 1)由数字、字母、下划线组成
    2. 2)不能以数字开头
    3. 3)不能是关键字,比如def,if,while
    4. #查看关键字
    5. import keyword
    6. print(keyword.kwlist)
    7. 4)区分大小写
  • 变量名(标识符)

命名风格

  1. 下划线命名法 比如 config_address
  2. 大驼峰命名 比如 ConfigAddress
  3. 小驼峰命名 比如 configAddress

2、数据类型

获取当前数据类型: type()
数据类型: 数值、字符串、布尔值

2.1)数值类型及运算

算术运算符: +、-、、/、%
赋值运算符: =,+=,-=,
= , /=, %=
比较运算符: ==(等于) != (不等于) > < >= <= (结果: 布尔值,用于if语句中)
逻辑运算符: and(与),or(或),not (非)

  1. +=
  2. a += b 相当于 a = a + b
  3. -= a -= b 相当于 a = a - b
  4. *= a *= b 相当于 a = a * b
  5. /= a /= b 相当于 a = a / b
  6. **= a **= b 相当于 a = a ** b 指数
  7. //= a //= b 相当于 a = a // b 整除
  1. a = 5
  2. b = 20
  3. if (a <= b):
  4. print("5 - a 小于等于 b")
  5. else:
  6. print("5 - a 大于 b")
  7. if (b >= a):
  8. print("6 - b 大于等于 a")
  9. else:
  10. print("6 - b 小于 a")

input: 接收用户的输入

  1. #字符串的额数字,转换成int类型 int()
  2. age = int(input("请输入你的年龄:"))
  3. height = int(input("请输入您择偶的身高:"))
  4. salary = int(input("请输入您择偶的收入:"))
  5. if age > 20 and height >175 and salary >= 10000:
  6. print('非常满意')
  7. elif age > 20 and height >160 and height <=175 and salary > 8000 and salary < 10000:
  8. print('满意')
  9. else:
  10. print('不满意')

2.2)字符串操作

  • 单引号、双引号、三引号(单、双)
  • 空字符串: s=’’
  • 转换字符串: str()
  • Python字符串运算符

    1. +: 字符串连接<br /> [ : ]: 通过索引获取字符串中的字符 (**左闭右开**)<br /> in and not in 成员运算符<br /> % 格式字符串<br />字符串是 Python 中最常用的数据类型。我们可以使用引号( **'** 或 **"** )来创建字符串。<br />创建字符串很简单,只要为变量分配一个值即可。例如:
    1. var1 = 'Hello World!'
    2. var2 = "Runoob"

    Python 访问字符串中的值 (查,取值)

    Python 访问子字符串,可以使用方括号来截取字符串,如下实例: ```bash var1 = ‘Hello World!’ var2 = “Runoob”

print (“var1[0]: “, var1[0]) print (“var2[1:5]: “, var2[1:5])

  1. - 0开始,正向取值: +1,逆向取值: -1
  2. - 步长为正: 正序切 步长为负: 倒序切
  3. - 左闭右开
  4. - 默认起始索引为0,步长为1
  5. ![](https://cdn.nlark.com/yuque/0/2021/svg/12595061/1617177136373-5ebadc37-1d6f-45db-9947-b3532b60e896.svg#align=left&display=inline&height=201&margin=%5Bobject%20Object%5D&originHeight=201&originWidth=541&size=0&status=done&style=none&width=541)
  6. ```python
  7. s10='hello world'
  8. print(s10[0:2]) #he
  9. print(s10[0:-2]) #hello wor
  10. print(s10[-1:]) #-d
  11. print(s10[-1:-5:-1]) # [::-1] 字符串反转

Python 字符串更新 (改)

  1. var1 = 'Hello World!'
  2. print ("已更新字符串 : ", var1[:6] + 'Runoob!')

IN and NOT IN

  1. a = "Hello"
  2. b = "Python"
  3. print "a + b 输出结果:", a + b
  4. print "a * 2 输出结果:", a * 2
  5. print "a[1] 输出结果:", a[1]
  6. print "a[1:4] 输出结果:", a[1:4]
  7. if( "H" in a) :
  8. print "H 在变量 a 中"
  9. else :
  10. print "H 不在变量 a 中"
  11. if( "M" not in a) :
  12. print "M 不在变量 a 中"
  13. else :
  14. print "M 在变量 a 中"
  15. print r'\n'
  16. print R'\n'

循环(迭代及循环)

可以迭代的变量有str,list,dict,set,tuple

  1. 案例1
  2. s10='hello world'
  3. count=0
  4. while count < len(s10):
  5. print(s10[count])
  6. count += 1
  7. #输出
  8. h
  9. e
  10. l
  11. l
  12. o
  13. w
  14. o
  15. r
  16. l
  17. d
  18. 案例2
  19. s10='hello world'
  20. for c in s10:
  21. print(c)

Python字符串格式化

%s: 格式化字符串
%d: 格式化整数
%f: 格式化浮点数字

  1. print("{} {}".format('hello', 'word')) # 不设置指定位置,按默认顺序
  2. hello word
  3. print("{1} {0}".format('hello', 'word')) # 设置指定位置
  4. word hello
  5. print("{1} {0} {1}".format('hello', 'word')) # 设置指定位置
  6. word hello word
  1. print('my name is {name},my age is {age}'.format(name='jack', age=18))
  2. my name is jack,my age is 18
  3. # 通过字典设置参数
  4. dic = {'name':'jack','age':18}
  5. print('my name is {name},my age is {age}'.format(**dic))
  6. my name is jack,my age is 18
  7. # 通过列表索引设置参数
  8. my_list = ['jack', 18]
  9. print('my name is {0},my age is {1}'.format(*my_list))
  10. my name is jack,my age is 18
  11. my_list = ['jack', 18]
  12. print('my name is {0[0]},my age is {0[1]}'.format(my_list)) # "0" 是必须的
  13. my name is jack,my age is 18

案例1:

  1. 'Sam has {1:d} red balls and {0:d} yellow balls'.format(12, 31)
  2. #输出
  3. Sam has 31 red balls and 12 yellow balls

案例2: 通过列表索引设置参数

  1. array = [34, 66, 12]
  2. "A = {0}, B = {1}, C = {2}".format(*array)
  3. #输出
  4. A = 34, B = 66, C = 12

案例3: 通过字典设置参数

  1. d = {
  2. 'hats' : 122,
  3. 'mats' : 42
  4. }
  5. "Sam had {hats} hats and {mats} mats".format(**d)
  6. #输出
  7. Sam had 122 hats and 42 mats

案例4:通过字典设置参数

  1. 'Sam has {red} red balls and {green} yellow balls'.format(red = 12, green = 31)

内置函数(常用的操作方法)

startswith()判断字符串以某个字符串开头,返回boolean类型
  1. name = "zhangsan"
  2. isTrue = name.startswith("zh")
  3. print(isTrue)
  4. # 打印结果:True

endswith()判断字符串以某个字符串结尾,返回boolean类型
  1. name = "zhangsan"
  2. isTrue = name.endswith("san")
  3. print(isTrue)
  4. # 打印结果:True

find()在字符串中查找指定字符串,找不到时返回-1:
  1. name = "zhangsan"
  2. isIn = name.find("an")
  3. print(isIn)
  4. # 打印结果:2
  5. # 返回字符串开始的下标

index()在字符串中查找指定的字符串,找不到时直接报错
  1. name = "zhangsan"
  2. isIn = name.index('h')
  3. print(isIn)
  4. # 打印结果:1

format()格式化输出字符串
  1. name = "{} {} zhangsan" #"{} {}"是占位符,用下边format()里边的参数填充
  2. name = name.format('I', 'am')
  3. print(name)
  4. # 打印结果:I am zhangsan

join()字符串连接 (将列表转为字符串)
  1. name = "zhangsan"
  2. name = '*'.join(name)
  3. print(name)
  4. # 打印结果:z*h*a*n*g*s*a*n
  5. name=['h','e','l','l','o']
  6. newname=''.join(name)
  7. print(newname)
  8. #打印结果:hello

isalnum()判断字符串是否包含字母数字字符
  1. name = "zhangsan1"
  2. isTrue = name.isalnum()
  3. print(isTrue)
  4. # 打印结果:True
  5. name = "zhangsan1*"
  6. isTrue = name.isalnum()
  7. print(isTrue)
  8. # 打印结果:False

isalpha()判断是否只包含字母:
  1. name = "zhangsan"
  2. isTrue = name.isalpha()
  3. print(isTrue)
  4. # 打印结果:True
  5. name = "zhangsan1"
  6. isTrue = name.isalpha()
  7. print(isTrue)
  8. # 打印结果:False

isdigit()判断字符串只由数字构成:
  1. name = "1234"
  2. isTrue = name.isdigit()
  3. print(isTrue)
  4. # 打印结果:True
  5. name = "zhangsan1234"
  6. isTrue = name.isdigit()
  7. print(isTrue)
  8. # 打印结果:False
  1. #错误3次就退出
  2. restr=''
  3. count=0
  4. while count < 3:
  5. num = input("请%s输入:" % restr)
  6. if num.isdigit():
  7. num = int(num)
  8. print(num)
  9. break
  10. elif (count >= 2):
  11. print("错误次数太多")
  12. break
  13. else:
  14. print("请输入数字")
  15. restr = "再次"
  16. count += 1

isspace()判断字符串是否是空格:
  1. name = " "
  2. isTrue = name.isspace()
  3. print(isTrue)
  4. # 打印结果:True
  5. name = "zhang san"
  6. isTrue = name.isspase()
  7. print(isTrue)
  8. # 打印结果:False

isupper()判断字符串是否全是大写字符:
  1. name = "ZHANGSAN"
  2. isTrue = name.isupper()
  3. print(isTrue)
  4. # 打印结果:True

lower()将所有的大写字符转为小写字符:
  1. name = "ZHANGSAN"
  2. name = name.lower()
  3. print(name)
  4. # 打印结果:zhangsan

lstrip()去除字符串左边的空格:
  1. name = " zhangsan "
  2. name = name.lstrip()
  3. print(name)
  4. # 打印结果:zhangsan

rstrip()去除字符串右边的空格:
  1. name = " zhangsan "
  2. name = name.rstrip()
  3. print(name)
  4. # 打印结果: zhangsan

strip()去除字符串2边的空格:
  1. name = " zhangsan "
  2. name = name.strip()
  3. print(name)
  4. # 打印结果:zhangsan

replace()字符串替换:
  1. name = "zhangsan"
  2. name = name.replace("zhang", "li")
  3. print(name)
  4. # 打印结果:lisan

split()字符串分割,默认是空格:
  1. name = "zhang san"
  2. name = name.split()
  3. print(name)
  4. # 打印结果:['zhang', 'san']

2.3)列表(list)

  • 列表里可以存放任意类型的数据,每个数据之间,用逗号分隔,是有序的
  • 整个列表被包裹在一对中括号[]里,如果你定义lst = []
  • []表示一个空列表
  • 与字符串的索引一样,列表索引从0开始。列表可以进行截取、组合等。

    索引的概念 (左闭右开)

    列表是数据的有序集合,对于列表里数据的操作,都必须通过索引来完成
    1. lst = [2, 3, 5, 6]
    下面这张图很好的阐述了索引的概念
    1、Python基本语法 - 图1
    所谓正序索引,就是从左向右看,倒序索引就是从右向坐看,由左至右,从0开始递增,从右向左,从-1开始递减,python既支持正序索引,也支持倒序索引
    image.png

    访问列表中的值

    ```bash list1 = [‘physics’, ‘chemistry’, 1997, 2000] list2 = [1, 2, 3, 4, 5, 6, 7 ]

print (“list1[0]:”, list1[0]) #取值 print (“list2[1:5]: “, list2[1:5]) #切片取值

结果

list1[0]: physics list2[1:5]: [2, 3, 4, 5]

指定开始位置,不指定结束位置

lst = [3, 4, 1, 4, 2, 5, 8] lst1 = lst[2:] print(lst1)

结果

[1, 4, 2, 5, 8]

  1. <a name="q1Jry"></a>
  2. #### 字符串和列表互为转换
  3. ```bash
  4. str="hello world hi"
  5. lst=str.split(' ')
  6. print(lst)
  7. #结果
  8. ['hello', 'world', 'hi']
  9. #将列表转为字符串
  10. lst=['hello', 'world', 'hi']
  11. str=' '.join(lst)
  12. print(str)
  13. #结果
  14. hello world hi

向列表中新增数据

  1. #append新增数据
  2. list = [] ## 空列表
  3. list.append('Google')
  4. print(list)
  5. #结果
  6. ['Google']
  7. #name_list.insert(下标, 数据)
  8. list=['a',1,'c','d',2,'e']
  9. list.insert(2,'a1')
  10. print(list)
  11. #结果
  12. ['a', 1, 'a1', 'c', 'd', 2, 'e']
  13. #追加数据 拆开序列追加到序列尾部
  14. list=['TOM', 'Lily', 'ROSE', 'TOM', [11, 22]]
  15. list.extend(['xiaoming', 'xiaohong'])
  16. print(list)
  17. #结果
  18. ['TOM', 'Lily', 'ROSE', 'TOM', [11, 22], 'xiaoming', 'xiaohong']
  19. #修改列表的值
  20. motorcycles = ['honda', 'yamaha', 'suzuki']
  21. print(motorcycles)
  22. motorcycles[0] = 'ducati'
  23. print(motorcycles)
  24. #结果
  25. ['honda', 'yamaha', 'suzuki']
  26. ['ducati', 'yamaha', 'suzuki']

删除列表元素

  1. #通过索引删除
  2. list=['TOM', 'Lily', 'ROSE', 'TOM', [11, 22]]
  3. del list(2)
  4. print(list)
  5. #结果
  6. ['TOM', 'Lily', 'TOM', [11, 22]]
  7. #删除指定的对象
  8. list=['TOM', 'Lily', 'ROSE', 'TOM', [11, 22]]
  9. list.remove('TOM')
  10. print(list)
  11. #结果
  12. ['Lily', 'ROSE', 'TOM', [11, 22]]

遍历列表**

  1. #通过索引遍历
  2. lst = [3, 5, 8, 1, 2, 6, 9]
  3. for i in range(len(lst)):
  4. print(lst[i])
  5. #通过迭代器遍历
  6. lst = [3, 5, 8, 1, 2, 6, 9]
  7. for item in lst:
  8. print(item)

列表操作符

len: 获取列表长度
in: 数据是别表成员之一
not in: 数据不是列表成员之一

操作符 功能作用
+ 连接两个列表
* 重复列表内容
in 成员操作符,判断某个数据是否在列表中
not in 成员操作符,判断某个数据是否在列表中

列表对 + 和 * 的操作符与字符串相似,现在,在交互式解释器里跟随我一起操作

  1. >>> lst1 = [1, 2, 3]
  2. >>> lst2 = [4, 5, 6]
  3. >>> lst1 + lst2
  4. [1, 2, 3, 4, 5, 6]
  5. >>> lst1*3
  6. [1, 2, 3, 1, 2, 3, 1, 2, 3]
  7. >>> 3 in lst1
  8. True
  9. >>> 4 not in lst2
  10. False

python嵌套列表

  1. lst = [1, [1, 5], 3, [9, 8, [1, 3]], 5]
  2. print(lst[3][2][0])
  3. print(lst[1:4])
  4. #结果
  5. 1
  6. [[1, 5], 3, [9, 8, [1, 3]]]

sort() 排序:升序(默认) 和 降序


前提: 数据之间全部具有可比性,数据要统一类型**

  1. list1 = [1, 3, 2, 5, 4, 6]
  2. list1.sort(reverse=True)
  3. print(list1)
  4. #结果
  5. [6, 5, 4, 3, 2, 1]
  1. def cmp(x):
  2. return int(x[:-4])
  3. lst = ['1.jpg', '2.jpg', '3.jpg', '10.jpg', '20.jpg']
  4. lst.sort(key=cmp, reverse=True)
  5. print(lst)
  6. #结果
  7. ['20.jpg', '10.jpg', '3.jpg', '2.jpg', '1.jpg']

2.4) 元组(tuple)

在python中,元组是一种与列表非常相似的数据类型,除了append,insert等改变数据内容的方法,列表支持的方法,元组几乎都支持, 它们之间最大的区别在于元组里的元素不能被修改

  • 元组里的元素不能被修改
  • 元组使用小括号,列表使用中括号
  • 如果元组里只有一个元素,也必须使用逗号
  • 元组与列表之间可以使用list()和tuple()函数进行转换 ```bash

    列表转元组

    lst = [1,2,3] tup = tuple(lst) print(tup)

元组转列表

tup=(1,2,3) lst=list(tup) print(lst)

  1. <a name="B8MUV"></a>
  2. #### 函数返回多个结果时,元组可以作为返回值
  3. ```bash
  4. def func(x, y):
  5. return x, y, x+y
  6. res = func(2, 3)
  7. print(res)
  8. #结果
  9. (2,3,5)

元组作为函数的可变参数

  1. def func(*args):
  2. print(args, type(args))
  3. func(3, 4, 5)

访问元组

  1. tup1 = ('physics', 'chemistry', 1997, 2000)
  2. tup2 = (1, 2, 3, 4, 5, 6, 7 )
  3. print "tup1[0]: ", tup1[0]
  4. print "tup2[1:5]: ", tup2[1:5]

元组运算符

与字符串一样,元组之间可以使用 + 号和 * 号进行运算。这就意味着他们可以组合和复制,运算后会生成一个新的元组

Python 表达式 结果 描述
len((1, 2, 3)) 3 计算元素个数
(1, 2, 3) + (4, 5, 6) (1, 2, 3, 4, 5, 6) 连接
(‘Hi!’,) * 4 (‘Hi!’, ‘Hi!’, ‘Hi!’, ‘Hi!’) 复制
3 in (1, 2, 3) True 元素是否存在
for x in (1, 2, 3): print x, 1 2 3

2.5)字典(dict)

  • 字典通过{}来标识
  • 字典的结构{key:value}键值对来标识
  • 字典是无序的,通过key获取到值
  • key需要唯一,且为不可变类型

image.png
注意: 什么数据可以做key

数据必须是可hash的,下面罗列的5种数据类型是可以做字典key的数据类型

  1. bool
  2. int
  3. float
  4. 字符串
  5. 元组

下面3中数据类型不可以做字典的key

  1. 列表
  2. 集合
  3. 字典

凡是可变对象都不可以做字典的key,凡是不可变对象,都可以做字典的key

创建一个字典

字典里存储的是键值对,键值对用冒号分割key与value,每个键值(key-value)对用逗号分割,整个字典包裹在花括号{}中

  1. contacts_dict = {
  2. "小王": '13892339876',
  3. "小张": '13898320987',
  4. "小李": '13890348745'
  5. }
  6. #空字典
  7. empty_dict = {}
  8. dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};

访问字典里的值

  1. dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
  2. print("dict['Name']: ", dict['Name'])
  3. print("dict['Age']: ", dict['Age'])
  4. #结果
  5. dict['Name']: Zara
  6. dict['Age']: 7
  7. 如果用字典里没有的键访问数据,会输出错误如下:
  8. Traceback (most recent call last):
  9. File "test.py", line 5, in <module>
  10. print "dict['Alice']: ", dict['Alice'];

新增键值对和修改value

  1. #修改value数据
  2. score_dict = {
  3. '小明': 96,
  4. '小刚': 98,
  5. '小红': 94
  6. }
  7. score_dict['小丽'] = 100
  8. print(score_dict['小丽'])
  9. #新增键值对
  10. score_dict['小兰'] = 89
  11. print(score_dict)
  12. #结果:
  13. {'小明': 96, '小刚': 98, '小红': 94, '小兰': 89}
  14. #如果key不存在
  15. Traceback (most recent call last):
  16. File "/Users/kwsy/PycharmProjects/pythonclass/mytest/demo.py", line 7, in <module>
  17. print(score_dict['小丽'])
  18. KeyError: '小丽'

删除字典

  1. dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
  2. del dict['Name'] # 删除键是'Name'的条目
  3. dict.clear() # 清空词典所有条目
  4. del dict # 删除词典
  5. print("dict['Age']: ", dict['Age'])
  6. print("dict['School']: ", dict['School'])

python嵌套字典

  1. stu_dict = {
  2. 'name': '小明',
  3. 'age': 12,
  4. 'score': {
  5. '语文': 90,
  6. '数学': 98
  7. }
  8. }
  9. print(stu_dict['score']['语文'])

字典遍历

  1. #遍历键
  2. dict1 = {'name': 'TOM', 'age': 20, 'gender': '男'}
  3. for key in dict1.keys():
  4. print(key)
  5. #遍历键值对
  6. dict1 = {'name': 'TOM', 'age': 20, 'gender': '男'}
  7. for item in dict1.items():
  8. print(item)
  9. #结果
  10. ('name', 'TOM')
  11. ('age', 20)
  12. ('gender', '男')

python字典方法介绍

方法 功能作用
clear() 删除字典内所有的元素
copy() 返回字典的浅复制
fromkeys() 以指定key创建一个新的字典
get() 返回指定key的值
items() 成对返回所有key和value
keys() 返回字典所有的key
values 返回字典所有value
setdefault() 为key设置对应的默认值
update() 更新字典
pop() 删除键值对
  1. #get,返回指定key的值
  2. get方法,是一种安全的获取value的方法,如果key不存在,则返回defaultdefault可以由你来指定,如果你不指定,则默认为None
  3. empty_dict = {}
  4. print(empty_dict.get('python'))
  5. print(empty_dict.get('python', 100))
  6. #结果
  7. None
  8. 100