官网下载
- https://www.python.org/downloads/macos/
- mac 本 把 python3转换成 python ,终端执行
echo 'alias python="python3"' >> .bash_profile,并重新打开终端,但关闭终端即失效
PyCharm开发工具
- PyCharm集成开发工具,下载免费版 https://www.jetbrains.com/zh-cn/pycharm/download/?section=mac
- 插件,设置> Plugins ——— 1.转中文插件 chinese 2.翻译插件 Translation
-
快捷键image.png
基础语法
变量定义 变量名 = 变量值 ,变量是可以发生改变的
money = 50
money = money - 10
print(money)
查看数据类型
money = 50
money_type = type(money)
print(money_type)
<class 'int'> # int整数类型 float浮点数类型 string 字符串
数据转换
1.转成字符串类型 str(值)
2.转成整数类型 int(值)
3.转成浮点数类型 float(值)
4.整数转浮点数会加.0
5.浮点数转整数会丢失小数部分
str = str(111) # 转字符串
print(type(str),str)
int = int("112") # 转整数
print(type(int),int)
float = float("12.111") # 转浮点
print(type(float),float)
num = float(11)
print(num)
num2 = int(11.311)
print(num2)
# print 输出
<class 'str'> 111
<class 'int'> 112
<class 'float'> 12.111
11.0
11
算数运算符
print("1+1=",1+1)
print("1-1=",1-1)
print("1*1=",1*1)
print("1/1=",1/1)
print("11//2=",11//2)
print("9%2=",9%2)
print("9**2=",9**2)
# print 输出
1+1= 2
1-1= 0
1*1= 1
1/1= 1.0
11//2= 5
9%2= 1
9**2= 81
赋值运算符
num = 2
num += 2
print('num += 2',num)
num -= 2
print('num -= 2',num)
num *= 2
print('num *= 2',num)
num /= 2
print('num /= 2',num)
num //= 2
print('num //= 2',num)
num **= 2
print('num **= 2',num)
num %= 2
print('num %= 2',num)
# print输出
num += 2 4
num -= 2 2
num *= 2 4
num /= 2 2.0
num //= 2 1.0
num **= 2 1.0
num %= 2 1.0
字符串拼接
字符串不能用+和数字类型直接拼接
1)方式1: 字符串可以用占位的形式进行拼接,用%s占位,在后边用%链接需要拼接的变量
1.%s 是将变量变成字符串类型拼接
2.%d 是将变量变成整数拼接
3.%f 是将变量变成浮点数类型拼接
money = 10
number = 5
str = "%s快钱买%个棒棒糖" % (money,number)
print(str)
2)方式二
1.语法 f"字面量{变量}"
2.这种方式不理会类型,不改变精度
num = 121
str = f"打印数字{num}"
print(str) # 打印数字121
浮点数精度控制
- 使用辅助符号m.n控制数据的宽度和精度
2.m控制数字的宽度,设置的宽度小于自身时不生效,长度不够用空格补位
3..n控制精度,会进行小数的四舍五入
# %5d 表示控制整数位数是5位
num = 11
str = "今天是%5d" % num
print(str) # 今天是 11,空格占位3
# %.3f 表示控制浮点数的精度是3位
num = 1.1211
str = "打印数字%.3f" % num
print(str) # 打印数字1.121
# %5.2f 表示数字长度是5,并且保留2位小数
num = 4.12121
str = "打印数字%5.2f" % num
print(str) # 打印数字 4.12 空格占位2
input()获取键盘输入内容
1.input()可以返回键盘输入的内容
2.input(提示信息),可以在输入内容之前打印出提示信息
3.input()获取的输入内容都会转成字符串
name = input("用户名称")
type = input("用户类型")
print(f"最贵的{name},您是本店的{type}用户")
# 用户名称宇智波带土
# 用户类型sssvip
# 最贵的宇智波带土,您是本店的sssvip用户
比较运算符
- == 判断内容是否相等,相等为True,不等False
- != 判断内容是否不相等,相等False为,不等True
判断是否大于,大于为True,不大于False
- < 判断是否小于,小于为True,不小于False
= 判断是否大于或等于
- <= 判断是否小于或等于
if 判断语句
- 判断条件一定要是布尔值
- 判断条件后边有冒号
- 归属于if的代码块要有4个空格缩进
num = 12
if num < 11:
print("大于11")
elif num = 12:
print("等于12")
else:
print("小于")
循环语句
1)while循环
- while循环的条件必须是布尔值,True就继续循环,False就停止循环
- 需要设置终止循环的条件,否则就会无限循环
- 循环内容需空格缩进
num = 1
while num < 4:
print("num = 10")
num += 1
# num = 10
# num = 10
# num = 10
2)for循环
- for循环无法定义循环条件,只能被动取出数据处理
- for循环内容需要空格缩进
str = "学习for循环"
for x in str:
print(x)
# print 输出
学
习
f
o
r
循
环
break和continue
- continue关键字用于中断本次循环,直接进入下次循环
- continue 关键字可用于 for 循环和 while循环
- continue 关键字只作用当前循环外部循环没有作用
for X in range(1,4,2):
print(X)
continue
print('aaa')
# 1
# 3
- break 关键字直接结束当前循环
- break 关键字可用于 for 和 while 循环
for X in range(1,4):
print(X)
break
print('aaa')
# 1
range语句生成简单数字序列
- range()可以获取一个数字序列
- 语法有三种
range(2) 表示从0-1的一个序列 [0,1]
range(2,4)表示从2-3的一个序列 [2,3]
range(2,7,2)表示从2-7但不包括7中能整除2的数字组成的序列 [2,4,6]
ran = range(5)
for x in ran:
print(x)
# print输出
# 0
# 1
# 2
# 3
# 4
ran = range(2,5)
for x in ran:
print(x)
# print输出
# 2
# 3
# 4
for x in range(3,9,2):
print(x)
# print 输出
# 3
# 5
# 7
函数
- 用 def 定义函数
- return 返回值,return之后不会再执行
- 函数体内部是局部作用域,外部不能访问函数内声明的变量
- 函数可以返回多个返回值
- 函数传参方式有 按顺序传参、关键字传参、
- 关键字传参可以不按顺序,也可以和按顺序传参混用,顺序传参要写到前面
- 函数参数可以设置默认值,当不传参时使用默认值
- 不定长参数(位置传递) *args 所有传入的参数会args 变量收集,并以元组的形式返回
- 关键字不定长参数 **kwargs所有以键值对形式传入的参数都会存到 **kwargs 变量中并以对象的形式返回{"aa": 11,"bb": 22}
def sey_hello(a):
"""
:param a: 传入姓名
:return:
"""
return print(f"{a},你好")
sey_hello("python")
# 函数返回多个值
def my_return():
return 1, "aa"
a, b = my_return()
print(a, b) # 1 aa
lambda 匿名函数
- 匿名函数只能临时使用一次
- 匿名函数只能写一行代码,无法写多行代码
def my_fun (c):
return c(1,3)
num = my_fun(lambda a,b: a + b)
print(num) # 4
global 关键字
- global 关键字可以把局部变量变为全局变量
num = 1
def sey_hello():
global num
num = 2
sey_hello()
print(num)
list 列表
- 列表每个元素都有一个编号叫下标索引
- 从前向后,索引从0开始,从后往前索引从-1开始
list = [11,22,33]
print(list[0]) # 11
print(list[-1]) # 33
- 查找列表中的元素,返回索引 list.index('值')
list = [11,22,33]
print(list.index(22)) # 1
- 通过索引在指定位置插入元素
list = [11,22,33]
list.insert(1,44)
print(list) # [11, 44, 22, 33]
- 把元素添加在列表的最后
list = [11,22,33]
list.append(44)
print(list) # [11, 22, 33, 44]
- 把一个列表添加在另一个列表的尾部
list = [11,22,33]
list2 = [44,66]
list.extend(list2)
print(list) # [11, 22, 33, 44, 66]
- 通过下标删除列表中的元素
list = [11,22,33]
del list[2]
print(list) # [11, 22]
- 把列表中的元素删除,并返回删除的元素
list = [11,22,33]
newlist = list.pop(2)
print(list,newlist) # [11, 22] 33
- 只删除列表中匹配的第一个元素
list = [11,22,33,22]
list.remove(22)
print(list) # [11, 33, 22]
- 清空列表
list = [11,22,33,22]
list.clear()
print(list) # []
- 查找列表中某个元素的个数
list = [11,22,33,22]
num = list.count(22)
print(list,num) # [11, 22, 33, 22] 2
- 统计列表中元素的个数
list = [11,22,33,22]
num = len(list)
print(list,num) # [11, 22, 33, 22] 4

image.png
循环列表
1)通过 while循环列表
idx = 0
list = [11,22,33,55]
while idx < len(list):
print(list[idx])
idx += 1
# 11
# 22
# 33
# 55
- 通过 for 循环列表
list = [11,22,33,55]
for X in list:
print(X)
# 11
# 22
# 33
# 55
元组
- 元组和列表的区别是不能修改,添加,删除元素
- 如果元组中只有一个元素那么元素后需要加","
t1 = (11,'aaa',13)
t2 = ()
t3 = tuple()
t4 = ("AA",)
print(type(t1)) # <class 'tuple'>
print(t1[2]) # 13
字符串的方法
- 字符串.index("值")方法,返回查找元素的索引
str = "12311213"
print(str.index('2')) # 1
- 字符串.replace("被查找的元素","替换后的元素"),返回一个替换后的新字符串
str = "12311213"
print(str.replace('12','aa')) # aa31aa13
- 字符串.split("分割字符"), 返回一个分割后的列表
str = "12311213"
print(str.split("2")) # ['1', '311', '13']
- 字符串.strip(元素),返回一个去掉前后空格的新字符串,如果传入参数就是删除指定的元素
str = " 1231 12 13 "
print(str.strip("1")) # 1231 12 13
str2 = "1231 12 13"
print(str2.strip()) # 1231 12 13
- 字符串.count(值),返回传入元素存在的个数
str2 = "1231 12 13"
print(str2.count('3')) # 2
- len(字符串),返回字符串的长度
str = "12313"
print(len(str)) # 5

image.png
列表切割
- 语法:列表[起始下标,结束下标,步长]
- 表示从起始下标开始,到结束下标(不包含)结束,间隔步长进行切割,得到一个新列表
- 起始下标可以留空,表示从头开始
- 结束坐标可以留空,表示截取到结尾
- 步长如果为1,可以省略
- 步长表示截取的间隔,步长为负数表示倒着截取
- 数组和元组用法相同
arr = [1, 2, 4, 5, 6, 7]
print(arr[:]) # 表示从开头截取到末尾 [1, 2, 4, 5, 6, 7]
print(arr[::-1]) # 表示从末尾截取到开头 [7, 6, 5, 4, 2, 1]
print(arr[2:4]) # 表示从4截取到5,步长为1 [4, 5]
print(arr[4:1:-1]) # 表示从6截取到4,步长为1 [6, 5, 4]
对象 set() & { }
- 对象中的每个元素不能重复,并且是乱序,不支持下标索引
- 对象.add(元素),对象中添加元素
- 对象.remove(元素),删除对象中的元素
- 对象.pop(),随机取出对象中的一个元素
- 对象.clear(),清空对象
- 对象.difference_update(对象2),删除对象1中的包含对象2中的元素
- 对象.union(对象2),合并对象1和对象2,返回一个新对象
- len(对象),查看对象中的元素数量
- 对象.keys(),获取对象中的所有键值对的键
set = {1,2,4,5,2}
set.add(44)
print(set) # {1, 2, 4, 5, 44}
set.remove(1)
print(set) # {2, 4, 5, 44}
new_set = set.pop()
print(new_set) # 1
set.clear()
print(set) # set()
set1 = {1,23,45,67}
set2 = {1,3,6,8}
set1.difference_update(set2)
print(set1) # {67, 45, 23}
print(set2) # {8, 1, 3, 6}
set3 = set1.union(set2)
print(set3) # {1, 67, 3, 6, 23, 8, 45}
print(len(set3)) # 7
dict = {"aa":1,"bb":2,"cc":3}
keys = dict.keys()
print(keys) # dict_keys(['aa', 'bb', 'cc'])
