Python介绍:
- Python是一种解释型,面向对象,动态数据类型的高级程序设计语言.也是目前最受欢迎的编程语言之一;
- 目前主流的Python版本有两大分类:
- 2.x,很多公司依然在用2.7版本,但Python官方在2020年将停止对Python 2的支持;
- 3.x,功能更加强大并且修复了很多2版本中不合适之处(推荐使用)
Python 2.x版本:
Python 2.5是不兼容3.0功能对的最后一个版本
Python 2.6是一个过渡版本,使用了Python 2.x的语法和库,同时允许使用部分Python 3.0的语法与函数;
Python2.7是2.x的最后一个版本,除了支持Python 2.x语法外,还支持Python 3.1语法
Python 3.x版本:
Python的3.0版本,常被称为Python 3000 或简称Py3K,在设计的时候没有考虑向下兼容问题;
Python的安装与环境配置:
- 准备Python的安装包 (安装Python的服务)
- 下载Pycharm的安装包(安装代码编辑器)
1.安装Python环境:
1-1:下载:
打开官网: http://www.python.org,点击Downloads下载,
1-2:安装:
傻瓜式安装;
1-3:写代码:
(1)首次使用必要配置
(2)写代码&运行
1-4:设置Python配置信息:
Python的基本语法:
- 输出语句
print("hello world") # print 默认换行显示;
print("hello world", end="") # 可以给一个参数, end="", 即可不换行显示;
原因: print这个方法中已经封装过了 end="\n" 换行封装完毕;
list列表定义操作与方法:
list1 = ['physics', 'chemistry', 1997, 2000]
list2 = [1, 2, 3, 4, 5 ]
list3 = ["a", "b", "c", "d"]
与字符串的索引一样,列表索引也是从0开始;
使用下标索引来访问列表中的值:
list1 = ['physics', 'chemistry', 1997, 2000]
list2 = [1, 2, 3, 4, 5, 6, 7]
print(list1[1]) #chemistry
print(list2[1::2]) #[2, 4, 6] 从下标1开始截取,截取到最后,步长为2
增加数据:
- 列表名.append(要增加的值) #末尾追加,在原列表中尾部追加值,每次只能追加一个值
list1 = ['physics', 'chemistry', 1997, 2000]
list1.append("永远18岁")
print(list1) #['physics', 'chemistry', 1997, 2000, '永远18岁']
2.列表名.insert(索引值,插入的数据)#插入,在原列表的指定索引位置插入值
list2 = [1, 2, 3, 4, 5, 6, 7]
list2.insert(1,"天天开心")
print(list2) #[1, '天天开心', 2, 3, 4, 5, 6, 7]
3.列表名.extend(要添加的列表) #扩展,将一个列表中的元素添加到另一个列表
list1=[1,2,3]
list2=[4,5,6]
list1.extend(list2)
print(list1)#[1, 2, 3, 4, 5, 6]
- 特点:在原来的列表上进行修改,该方法无返回值,但是会修改原来的列表
删除数据:
- 列表名.remove(要删除的value值) #在原列表中根据value值删除,(如果有重复的话,从左到右依次删除)
list1 = ['physics', 'chemistry', 1997, 2000]
list1.remove('chemistry')
print(list1)#['physics', 1997, 2000]
- 列表名.pop(索引值) #如果不加索引值,默认删除最后一个
#有索引值:
list1 = ['physics', 'chemistry', 1997, 2000]
list1.pop(0)
print(list1)#['chemistry', 1997, 2000]
#没有索引值:
list1 = ['physics', 'chemistry', 1997, 2000]
list1.pop()
print(list1)#['physics', 'chemistry', 1997]
- del 列表名[索引值] #根据索引值删除元素
list1 = ['physics', 'chemistry', 1997, 2000]
del list1[2]
print(list1)#['physics', 'chemistry', 2000]
- 列表名.clear() #清空原列表
修改数据: 列表名[下标]=要修改的值
list1 = ['physics', 'chemistry', 1997, 2000]
list1[1]="北京"
print(list1)#['physics', '北京', 1997, 2000]
Python列表脚本操作符
| 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 | 迭代 |
列表相关方法:
# [list.count(obj)]元素在列表中出现的次数
list1 = ['physics', 'chemistry', 2000,'chemistry',1999,'chemistry']
print(list1.count('chemistry')) #3
# [list.index(obj)]从列表中找出某个值第一个匹配项的索引位置
list1 = ['physics', 'chemistry', 2000,'chemistry',1999]
int(list1.index('chemistrypr'))#1
[list.sort(cmp=None, key=None, reverse=False)]对原列表进行排序
list1 =[1,4,6,10,9,2,3]
# 基础排序
list1.sort()
print(list1) #[1, 2, 3, 4, 6, 9, 10]
也就是说默认是升序
list1.sort(reverse=False)
print(list1)#[1, 2, 3, 4, 6, 9, 10]
# 降序排序
list1.sort(reverse=True)
print(list1)#[10, 9, 6, 4, 3, 2, 1]
元组定义操作与访问:
Python 的元组与列表类似,不同之处在于元组的元素不能修改
元组的创建:
tup1 = ('physics', 'chemistry', 1997, 2000)
tup2 = (1, 2, 3, 4, 5 )
#创建空元组
tup1 =()
#元组中只包含一个元素时,需要在元素后面添加逗号
tup2 =(2,)
元组的访问
使用下标索引来访问元组中的值:
tup1=[1,2,3,4,5,6,7]
tup2=["北京","工作","美食"]
print(tup1[1:5])#[2, 3, 4, 5]
print(tup2[1])#工作
元组的修改
元组中的元素值是不允许修改的,但我们可以对元组进行连接组合
tup1=[1,2,3,4,5,6,7]
tup2=["北京","工作","美食"]
tup3=tup1+tup2
print(tup3)#[1, 2, 3, 4, 5, 6, 7, '北京', '工作', '美食']
无关闭分隔符
在Python中,只要用逗号分隔多个值,即使没有括号,也会自动创建一个元组
x = 1, 2, 3
print(type(x)) # <class 'tuple'>
print(x) # (1, 2, 3)
元组的内置函数
tup1 = [1,2,3,4,5,6,7,11]
list1 = [11,22,33]
# 计算元组元素个数
print(len(tup1)) #8
# 返回元组中元素最大值
print(max(tup1)) #11
# 返回元组中元素最小值
print(min(tup1)) #1
# 将列表转换为元组
print(tuple(list1)) #(11, 22, 33)
集合的创建与运算
集合是 Python 中无序、可变、元素唯一的数据结构,用花括号 {} 或 set() 创建
集合的创建
# 创建空集合(注意:{}表示空字典)
s1 =set() #空集合
# 直接创建
s2 ={1,2,3}
print(s2)#{1, 2, 3}
print(type(s2)) #<class 'set'>
# 类型转换
s3 = set([1,2,3,3,4]) #{1, 2, 3, 4} 自动去重
print(s3)
s4 = set("hello")
print(s4)#{'l', 'e', 'o', 'h'}
集合的添加与删除操作
#添加元素:add、 updata
s = {1,2,3,4,3,5}
# 添加单个元素
s.add(8)
print(s) #{1, 2, 3, 4, 5, 8}
# 添加多个值
s2 = {1,2,3,4,3,5}
s2.update([9,10])
print(s2) #{1, 2, 3, 4, 5, 9, 10}
# 删除元素:pop 、remove、 clear、 discard
s = {1,2,3,4,3,5}
# s.remove(1)
print(s) #{2, 3, 4, 5}
# s.remove(10)
print(s) #要删除的数据不存在则会报错:KeyError:
# 随机删除并返回一个元素
s.pop()
print(s)
s.discard(10)
print(s) #要删除的数据不存在也不会报错,返回元集合
s.discard(2)
print(s) #{1, 3, 4, 5}
s.clear()
print(s) #set()
集合的运算
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}
# 交集
print(A & B) #{4, 5}
print(A.intersection(B)) #{4, 5}
# 并集
print(A | B) #{1, 2, 3, 4, 5, 6, 7, 8}
print(A.union(B))
# 差集 (A有B没有)
print(A - B) #{1, 2, 3}
print(A.difference(B))
# 对称差集
print(A ^ B) #{1, 2, 3, 6, 7, 8}
print(A.symmetric_difference(B))
集合使用最多的场景:
# 1. 列表去重
nums = [1, 2, 2, 3, 3, 3, 4]
unique = list(set(nums)) # [1, 2, 3, 4]
# 2. 查找共同元素
user1_likes = {"Python", "Java", "C++"}
user2_likes = {"Python", "JavaScript", "Go"}
common = user1_likes & user2_likes # {'Python'}
# 3. 数据差异检测
old_data = {101, 102, 103, 104}
new_data = {102, 103, 104, 105}
added = new_data - old_data # 新增:{105}
removed = old_data - new_data # 删除:{101}
# 4. 消除重复字符
string = "abracadabra"
unique_chars = ''.join(set(string)) # 'acbdr'(顺序不保证)
字典定义操作与方法:
字典是 Python 中无序、可变、键值对(key-value) 存储的数据结构,通过键来访问值,键key必须是不可变类型(如字符串、数字、元组)
字典的创建
# 创建空字典:
dict1 ={}
print(type(dict1)) #<class 'dict'>
# 创建
dict2 ={"name":"世界首富女士","age":18,"add":"北京"}
访问字典里的值
dict1 ={"name":"世界首富女士","age":18,"add":"北京"}
# 访问字典里的值:
print(dict1["name"]) #世界首富女士
#如果用字典里没有的键访问数据,会报错
print(dict1["pho"]) #KeyError: 'pho'
#添加数据 -末位添加
dict1 ={"name":"世界首富女士","age":18,"add":"北京"}
dict1["pho"]="123456"
print(dict1) #{'name': '世界首富女士', 'age': 18, 'add': '北京', 'pho': '123456'}
更新数据:
dict1 ={"name":"世界首富女士","age":18,"add":"北京"}
dict1["name"]="哈佛"
print(dict1)#{'name': '哈佛', 'age': 18, 'add': '北京', 'pho': '123456'}
删除操作:
dict1 ={"name":"世界首富女士","age":18,"add":"北京"}
# 删除指定的键及对应的值
del dict1["name"]
print(dict1)#{'age': 18, 'add': '北京', 'pho': '123456'}
# 末位删除并返回最后剩余的键值对
dict6 ={"school":"21世纪中学","name":"xiao","pho":"18700124566","add":"青岛"}
dict6.popitem()
print(dict6) #{'school': '21世纪中学', 'name': 'xiao', 'pho': '18700124566'}
# 删除整个字典:
dict1 ={"name":"世界首富女士","age":18,"add":"北京"}
del dict1
print(dict1) #name 'dict1' is not defined
#清空字典
dict1.clear()
print(dict1) #{}
字典的特性
字典的特性1:不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会把前一个值覆盖
dict1 ={"name":"世界首富女士","age":18,"add":"北京","name":"豆包"}
print(dict1["name"]) #豆包
字典的特性2:键必须不可变,所以可以用数字,字符串或元组充当,所以用列表就不行
#键是列表:
dict1 ={["name"]:"世界首富女士","age":18,"add":"北京"}
print(dict1) #TypeError: unhashable type: 'list'
#键是数字:
dict2 ={11:"世界首付女士","age":18,"add":"北京"}
print(dict2[11]) #世界首付女士
#键是元组:
dict3 ={11:"世界首付女士",(""):18,"add":"北京"}
print(dict3[("")]) #18
常用的方法:
dict1 = {"name":"世界首富女士","age":18,"add":"北京"}
dict2 = {"school":"上海交通","birth":"农历初一"}
# 获取所有的键 --字典名.keys()
k = dict1.keys()
print(k) #dict_keys(['name', 'age', 'add'])
# 获取所有的值 --字典名.values()
v = dict1.values()
print(v) #dict_values(['世界首富女士', 18, '北京'])
# 获取所有的键值对 --字典名.item()
item =dict1.items()
print(item) #dict_items([('name', '世界首富女士'), ('age', 18), ('add', '北京')])
# 合并字典、更新字典、覆盖现有字典、添加新键
dict1.update({"work":"护士"})
print(dict1) #{'name': '世界首富女士', 'age': 18, 'add': '北京', 'work': '护士'}
获取指定键的值,如果键不存在则设置默认值并返回--字典名.setdefault(key, default_value)
# 如果键存在:返回该键对应的值,不修改字典
vv = dict1.setdefault("name")
print(vv) #世界首富女士
# 如果键不存在:将键和默认值添加到字典中,并返回默认值
dict1.setdefault("age1",18)
print(dict1)#{'name': '世界首富女士', 'age': 18, 'add': '北京', 'work': '护士', 'age1': 18}
python的条件语句:
if语句
# 基本if
if 条件:
# 代码块
# if语句
a = input("请输入一个数字:")
a = int(a)
if a >=10:
print("该数值大于0:")
#解析:如果 输入的值a大于等于10,则输出:该数值大于0
# if-else
if condition:
# 条件为真时执行
else:
# 条件为假时执行
#示例:
a = input("请输入一个数字:")
a = int(a)
if a >=10:
print("该数值大于10:")
else:
print("该数值小于10:")
print("条件输出结束")
"""
输出结果:
请输入一个数字:14
该数值大于10:
条件输出结束
请输入一个数字:9
该数值小于10:
条件输出结束
"""
# if-elif-else
if condition1:
# 条件1为真
elif condition2:
# 条件2为真
else:
# 所有条件都为假
#示例:
# 学生成绩: 大于=90分的为A ;大于=80分的为B 大于=75的为C 小于75的为D
a1 = input("请输入该学生的本次成绩:")
a1 = int(a1)
if a1 >= 90:
print("该学生的成绩为A")
elif a1 >= 80:
print("该学生的成绩为B")
elif a1>=75:
print("该学生的成绩为C")
else:
print("该学生的成绩为D")
python的循环语句: while循环语句
基本语法:
while 条件表达式
循环体语句
#示例:
num = 1
while num <= 6:
print(f"第{num}次输出")
num +=1
print(num)
break --跳出整个循环
num1 =1
while num1 <=100:
if num1 % 7 == 0:
print(f"这个数可以被7整除:{num1}")
break
num1 +=1
# countion --跳出本次循环
# 打印-1到10所有的奇数
i =0
while i<10:
i +=1
if i % 2== 0:
continue #
print(i)
for循环
#基础语法:
for 变量 in 可迭代对象
循环体语句
特点:自动遍历序列中的每个元素,不需要手动维护索引和循环条件
# 示例: 遍历一个字符串
for char in "python":
print(char,end="-") #p-y-t-h-o-n-
# 示例:遍历元组:
tuple1 =("红", "绿", "蓝")
for tuple1s in tuple1:
print(tuple1s)# "红", "绿", "蓝"
# 示例:遍历列表
list1 =["苹果", "香蕉", "橙子", "葡萄"]
for lists in list1:
print(f"我喜欢吃{lists}") #我喜欢吃香蕉
# 示例:遍历键
person = {"name": "张三", "age": 25, "city": "北京"}
for key in person:
print(f"{key}")
# 示例:遍历值
for value in person.values():
print(f"{value}")
# 示例:遍历键值对
for key,value in person.items():
print(f"{key}:{value}")