1 数据类型
1.1 整型
-
示例
*python# 定义整型 age = 18 temp = -15 score = 90 # 打印 print('age:', age) print('temp:', temp) print('score:', score) # 打印当前变量的类型 print('age type:', type(age)) # 值比较大时,可以使用下划线分割,便于阅读 salary = 300_000 house_price = 3_200_000 graduates = 12_000_000 # 打印 print('salary:', salary) print('house_price:', house_price) print('graduates:', graduates) -
运行结果
*age: 18 temp: -15 score: 90 age type: <class 'int'> salary: 300000 house_price: 3200000 graduates: 12000000
1.2 浮点型
-
示例
*python# 浮点型变量 weight = 65.2 balance = 1425.58 out_temp = -25.2 price = 120.0 # 打印类型 print(type(weight)) # 浮点型的科学计数法表示 speed_of_sound = 3.4e+2 # 3.4乘以10的2次方 print(speed_of_sound) world_population = 7.8e9 # 7.8乘以10的9次方 print(world_population) print(type(world_population)) distance_sun_earth = 1.496E8 # 1.496乘以10的8次方 print(distance_sun_earth) one_ml = 1e-3 # 1乘以10的-3次方 -
打印结果
*<class 'float'> 340.0 7800000000.0 <class 'float'> 149600000.0
1.3 字符串
-
字符串四种定义方式
-
示例
*python# 字符串四种定义方式 # 方式1和2写法等价,二者都不能换行(要用圆括号才能换行),单引号用的比较多 # 方式1,不能换行 message1 = 'welcome to Python' # 方式2,不能换行 message2 = "welcome to Java" # 方式3,可以换行,并且可以作为多行注释使用 message3 = '''welcome to C++''' # 方式4,可以换行,也可以作为多行注释使用,还能作为文档字符串使用 message4 = """welcome to PHP"""
-
-
格式化输出
-
示例
*pythonname = '张三' gender = '男' weight = 65.2 age = 12 # 写法一 info1 = '我叫:' + name + ',性别:' + gender print(info1) # 写法二 info2 = '我叫:%s,性别:%s,体重:%f,年龄:%i' % (name, gender, weight, age) print(info2) # 写法三 info3 = f'我叫:{name},性别:{gender},体重:{weight},年龄:{age}' print(info3) -
结果
*我叫:张三,性别:男 我叫:张三,性别:男,体重:65.200000,年龄:12 我叫:张三,性别:男,体重:65.2,年龄:12
-
-
占位符精度控制
-
%m.ns:m限制字符串的最小宽度,位数不够会自动使用空格补全,位数小于字符串长度则不起作用。正数右对齐,负数左对齐。n为精度控制,最多输出n个字符。n大于实际字符串长度时则不起作用。
-
%m.nf:m控制整体宽度(整数宽度+小数点+小数宽度)。位数不够空格补,位数小于整体宽度,则自动失效。正数右对齐,负数左对齐。n为精度控制,保留n位小数(n默认值为6),不够补0,截断时会四舍五入。
-
%m.nd或者%m.nim控制最小宽度,位数不够空格补,位数小于整数位数,则自动失效。正数是右对齐,负数是左对齐。n为精度控制,最少用n位显示数字,位数不够用0补,位数小于正数位,则自动失效。
-
示例
*pythonname = '张三' gender = '男' weight = 65.45 age = 12 info1 = '我叫:%s,性别:%s,体重:%f,年龄:%i' % (name, gender, weight, age) print(info1) # 精度控制 info2 = '我叫:%4.1s,性别:%-3s,体重:%-5.1f,年龄:%4.4i.' % (name, gender, weight, age) print(info2) -
结果
*我叫:张三,性别:男,体重:65.450000,年龄:12 我叫: 张,性别:男 ,体重:65.5 ,年龄:0012.
-
-
转义字符
-
是一种在字符串中用于表示特殊含义的字符组合,通常以
\开头,通常用于表示哪些在字符串中补能直接写出的字符。 -
示例
*python# 使用\'输出' print('在python中, 可以使用\'包裹一个字符串') # 使用\"输出" print("在python中, 可以使用\"包裹一个字符串") # 使用\n进行换行 print('注册会员需要以下信息:\n姓名\n年龄\n手机号') # 使用\\输出\ print('路径:', 'F:\\study\\python\\') # 使用\b删除前一个字符 print('helloo\b') # 使用\r使光标回到本行开头, 覆盖输出 print('67%\r68%') # \t 水平制表符 print('12341234123412341234') # 默认一个制表符占4位 print('ab\tcdef\tgh') # 可以设置一个制表符占8位 print('ab\tcdef\tgh'.expandtabs(8)) print('我\t是中文') -
打印
*在python中, 可以使用'包裹一个字符串 在python中, 可以使用"包裹一个字符串 注册会员需要以下信息: 姓名 年龄 手机号 路径: F:\study\python\ hello 68% 12341234123412341234 ab cdef gh ab cdef gh 我 是中文
-
2 数据类型转换
-
把指定数据转为字符串:
str(),任何类型都可以转换为字符串。 -
把指定数据转为整型:
int() -
把指定数据转为浮点型:
float() -
示例
*python# 使用str()将指定数据转为字符串 result1=str(18) print(type(result1), result1) result2=str(12.88) print(type(result2), result2) # 使用int()将指定数据转为整型 result3=int(15.6) print(type(result3), result3) result4=int('256') print(type(result4), result4) # 使用float()将指定数据转为浮点型 result5=float('15.6') print(type(result5), result5) result6=float('18') print(type(result6), result6) -
结果
*<class 'str'> 18 <class 'str'> 12.88 <class 'int'> 15 <class 'int'> 256 <class 'float'> 15.6 <class 'float'> 18.0
3 运算符
3.1 算数运算符
| 运算符 | 说明 | 示例 | 结果 |
|---|---|---|---|
+ |
加 | 9 + 7 |
16 |
- |
减 | 7 - 2 |
5 |
* |
乘 | 3 * 4 |
12 |
/ |
除 | 9 / 6 |
1.5 |
// |
取整除 (取整) | 9 // 6 |
1 |
% |
取余 (取模) | 9 % 6 |
3 |
| `` | 指数 | 2 3 |
8 |
3.2 赋值运算符
| 运算符 | 含义 | 示例 | 等价代码 |
|---|---|---|---|
= |
赋值运算 | age = 18 |
- |
+= |
加法赋值运算 | age += 1 |
age = age + 1 |
-= |
减法赋值运算 | age -= 1 |
age = age - 1 |
*= |
乘法赋值运算 | price *= 0.8 |
price = price * 0.8 |
/= |
除法赋值运算 | pay /= 5 |
pay = pay / 5 |
//= |
取整赋值运算 | apple //= 14 |
apple = apple // 14 |
%= |
取模赋值运算 | seconds %= 60 |
seconds = seconds % 60 |
= |
指数赋值运算 | a = b |
a = a b |
3.3 比较运算符
| 运算符 | 作用 | 比较结果 | 示例代码 |
|---|---|---|---|
== |
判断左右两侧是否相等 | 成立为 True 不成立为 False | a = 5 b = 5 则 a == b 为 True |
!= |
判断左右两侧是否不等 | 成立为 True 不成立为 False | a = 5 b = 3 则 a != b 为 True |
> |
判断左侧是否大于右侧 | 成立为 True 不成立为 False | a = 5 b = 4 则 a > b 为 True |
< |
判断左侧是否小于右侧 | 成立为 True 不成立为 False | a = 4 b = 5 则 a < b 为 True |
>= |
判断左侧是否大于等于右侧 | 成立为 True 不成立为 False | a = 5 b = 5 则 a >= b 为 True |
<= |
判断左侧是否小于等于右侧 | 成立为 True 不成立为 False | a = 6 b = 6 则 a <= b 为 True |
3.4 布尔类型
python
# boolean类型
True False
3.5 逻辑运算符
| 运算符 | 名称 | 功能描述 |
|---|---|---|
and |
逻辑与 | 判断其两侧的值,是否都为 True |
or |
逻辑或 | 判断其两侧的值,是否至少有一个为 True |
not |
逻辑非 | 用于对一个值取反 |
4 进制转换
| 写法 | 功能 | 示例 |
|---|---|---|
bin() |
十进制转二进制字符串 | bin(25) → '0b11001' |
oct() |
十进制转八进制字符串 | oct(540) → '0o1034' |
hex() |
十进制转十六进制字符串 | hex(463) → '0x1cf' |
int() |
其他进制转十进制数字 | 二进制转十进制:int('0b11001', 2) → 25 八进制转十进制:int('0o1034', 8) → 540 十六进制转十进制:int('0x1cf', 16) → 463 |
5 输入输出语句
python
print("请输入年龄:")
# 输入的内容都是字符串
age = input()
print(f'输入年龄为{age}')
6 流程控制
6.1 分支
-
单分支
*pythonage = 18 if age >= 18: print('你是成年人') print('成年人要上班') print('hello world') -
双分支
*pythonage = 16 if age >= 18: print('你是成年人') print('成年人要上班') else: print('你是未成年人') print('未成年人要上学') print('hello world') -
多分支
*pythonage = int(input('请输入年龄: ')) if age < 18: print('你是未成年人') print('未成年人要上学') elif age >= 18 and age < 65: print('你是未成年人') print('成年人要上班') else: print('你是老年人') print('老年人要休息') print('hello world') -
嵌套分支
*pythonage = int(input('请输入年龄: ')) if age < 18: print('你是未成年人') print('未成年人要上学') elif age >= 18 and age < 65: if age >= 18 and age < 35: print("你是青年") elif age >= 35 and age < 45: print('你是中年') else: print('你是中老年') print('成年人要上班') else: print('你是老年人') print('老年人要休息') print('hello world')
6.2 循环
-
while循环
*pythonn = 6 while n > 0: n -= 1 print(f'当前n = {n}') -
for循环
*pythonn = 6 for n in range(n): n -= 1 print(f'当前n = {n}') -
continue与break
*pythonn = 6 while n > 0: n -= 1 # n == 3时跳过本次循环 if n == 3: continue print(f'1号测试: 当前n = {n}') n = 6 while n > 0: n -= 1 # n == 3时退出循环 if n == 3: break print(f'2号测试: 当前n = {n}')
7 函数
7.1 概念及分类
- 函数(function)是组织好的、可重复使用的、用于执行特定任务的代码块。
- Python 中函数分为三类:内置函数、模块提供的函数、自定义函数。
- 内置函数:直接可以使用
- 模块提供的函数:需要导入指定模块后才能使用
- 自定义函数:程序员自己定义的函数,先定义再使用
- 内置函数文档
- 模块提供的函数
- 接下来主要介绍自定义函数
7.2 基本使用
- 函数的定义与使用
python
# 定义函数
def welcome():
print('welcome')
# 调用内置函数
print('程序开始')
# 调用自定义函数
welcome()
7.3 参数使用
-
参数可以让函数接收外部传入的数据,能让函数更具通用性和灵活性。
-
位置参数
- 调用函数时,根据参数在函数定义时出现的顺序,把实参的值,依次传递给对应的形参。
python# 定义带参函数 def student01(name, score): print(f'你是{name}, 成绩是{score}') # 调用带参函数 - 位置参数 student01('Jack', 98) student01('Tom',96) -
关键字参数
- 关键字参数:函数调用时通过
形参名 = 值的形式传递的参数,就是关键字参数。 - 关键字参数的优势是不受顺序限制。
- 位置参数与关键字参数可以混合使用,但位置参数必须在关键字参数之前。
python# 定义带参函数 def student01(code, name, score): print(f'学号{code},你是{name},成绩是{score}') # 调用带参函数 - 关键字参数 student01(name='Jack', code=1001, score=100) student01(score=98, name='Tom', code=1002) # 关键字参数在位置参数之前,错误写法,会报错 student01(score=96, 'Jack', 100) - 关键字参数:函数调用时通过
-
限制传参方式
- 具体限制方式:
/前面只能用『位置参数』,*后面只能用『关键字参数』。
python# 定义带参函数 # / 前面的code只能使用位置参数,* 后面的score只能只用关键字参数 def student01(code, /, name, *, score): print(f'学号{code},你是{name},成绩是{score}') # 正确调用 student01('10010', name='Jack', score=100) student01('10020', 'Tom', score=98) - 具体限制方式:
-
参数默认值
- 在定义函数时,可以通过形参名 = 值的形式,为形参设置一个默认值
- 若调用函数时没有传入该参数的值,就使用默认值。
- 若调用函数时传入了该参数的值,就使用传入的值。
- 定义函数时,『默认参数』必须放在『必选参数』的后面,或者换一种说法就是:某个形参,一旦设置了默认值,那它后面的所有形参,也必须要写默认值!
python# 定义带参函数,score默认值为90 def student01(code, name, score=90): print(f'学号{code},你是{name},成绩是{score}') # 调用 student01('10010', 'Jack', 100) student01('10020', 'Tom') -
可变参数
- 在定义函数时,如果不确定会传入多少个参数,那就可以使用可变参数,具体写法有两种
- 使用
*形参名来接收任意数量的『位置参数』,多个位置参数最终会被打包成一个『元组』。 - 使用
**形参名来接收任意数量的『关键字参数』,多个关键字参数最终会被打包成一个『字典』。 - 『可变位置参数』和『可变关键字参数』,可以同时使用,但必须要先写『可变位置参数』。
python# 可变位置参数 def student01(*args): print(args) print('\n') # 可变关键字参数 def student02(**args): print(args) print('\n') # 混合使用-必须先写可变位置参数 def student03(*args1, **args2): print(args1) print(args2) print('\n') # 也可以和其它参数一起使用 def student04(name, *args1, **args2): print(args1) print(args2) print('\n') # 调用 student01('10010', 'Jack', 100) student02(code='10020', name='Tom', score=98) student03('10030', name='Lucy', score=96) student04('10040', 'July', score=99)
7.4 特殊的字面量 None
None是一个特殊的字面量,用来表示:空值、无值、无意义。- 几个关键点
- None的类型是NoneType。
- None出现在布尔判断中(if判断条件、while循环条件),会被当作False来处理。
- None不能参与任何数学运算,也不能与字符串拼接。
- 不给函数设置返回值,那函数默认就会返回None
- None出现最多的两个场景:
- 函数中没有写return,或写了return但没有返回任何内容 。
- 变量定义时,暂时还不知道要存放什么,可以先赋值为None。
python
msg = None
print(type(msg))
print(msg)
7.5 函数返回值
- 函数返回值:函数执行完毕后,会把执行结果交给调用者,这个执行结果就是函数的返回值。
- 使用return关键字可以设置函数的返回值,return的作用有两个,结束函数的运行和把return后面的值,作为函数的返回值。
python
# 获取内置函数返回值
res1 = type('hello')
print(f'res1 = {res1}')
res2 = int(15.6)
print(f'res2 = {res2}')
# 定义有返回值的函数
def myadd(data1, data2):
sum = data1 + data2
return sum
# 获取自定义函数返回值
res3 = myadd(1, 2)
print(f'res3 = {res3}')
8 作用域
-
全局作用域:整个
.py文件最外层的范围,就是全局作用域。 -
全局变量:写在全局作用域中的变量,就叫全局变量,全局变量在整个程序中都可以访问。
-
局部作用域:函数的内部范围,就是局部作用域。
-
局部变量:写在局部作用域中(函数内部)的变量,叫局部变量,它只能在当前函数中使用。
-
示例1
*python# 全局变量 data1 = 100 data2 = 200 def test01(): # 局部变量 data1 = 1234 data3 = 300 data4 = 400 # 可以访问局部变量,也可以访问全局变量 print(f'内部打印 data1 = {data1}') # 这里的data1是局部变量,和外面的全局变量没有关系 print(f'内部打印 data2 = {data2}') # data2为全局变量 print(f'内部打印 data3 = {data3}') # data3为局部变量 print(f'内部打印 data4 = {data4}') # data4为局部变量 test01() # 只能访问全局变量 print(f'外部打印 data1 = {data1}') print(f'外部打印 data2 = {data2}') -
示例2
*python# 全局变量 data1 = 100 data2 = 200 def test01(): # 声明data1为全局变量 global data1 data1 = 1234 # 定义局部变量 data3 = 300 data4 = 400 # 可以访问局部变量,也可以访问全局变量 print(f'内部打印 data1 = {data1}') print(f'内部打印 data2 = {data2}') print(f'内部打印 data3 = {data3}') print(f'内部打印 data4 = {data4}') test01() # 只能访问全局变量 print(f'外部打印 data1 = {data1}') print(f'外部打印 data2 = {data2}')
9 函数递归调用
-
递归调用,函数自己调用自己的一种操作。递归必须要具备终止条件。
-
示例
*pythondef welcome(n): print('welcome') if n > 1: welcome(n-1) welcome(5)
10 函数说明文档
- 写在函数里的文字说明,用来描述:函数的功能、需要哪些参数、返回什么结果,它的语法和普通字符串一样,用三引号包裹
python
def myadd(data1,data2):
"""
函数功能: 计算两个数相加结果
:param data1: 参数1
:param data2: 参数2
:return: 参数1和参数2相加结果
"""
return data1 + data2
myadd(1,2)
- 鼠标放到调用处可以看到函数说明







