Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。
免费、开源
应用领域广泛
运行速度相对会慢一些(解释型语言)
Python 2.X
Python 3.X:
Python 3.9
计算机只能认识一种语言,就是二进制的机器码。程序需要最终转换为二进制的机器码才能被执行,而转换的过程就分为两种:编译型和解释型。
对于编译型语言通过编译器编译之后可以直接将代码生成二进制程序执行;
而对于解释型语言需要在执行的时候通过解释器解释一段执行一段
Python解释器作用:解释执行python代码。
CPython:安装好Python 3.x后,就直接获得了一个官方版本的解释器:CPython。
IPython:是基于CPython之上的一个交互式解释器 。IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。
PyPy:采用JIT(just in time)技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。
Jython:是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行
IronPython:和Jython类似,IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码
下载地址:https://www.python.org/downloads/release/python-372/
查找目标文件:Windows x86-64 executable installer
python --version
在cmd环境下输入:python,进入客户端
#打印
print("Hello, World!")
#运行脚本
python test.py
#安装模块
pip install numpy
pip install jieba
#查看已安装模块列表
pip list
#安装特定版本号的模块
pip install torchtext==0.10.1
pip install jupyter notebook
pip uninstall torch torchvision
python的集成开发环境,功能如下:
Project管理
智能提示
语法高亮
代码跳转
调试代码
解释代码(解释器)
框架和库
下载地址:http://www.jetbrains.com/pycharm/download/#section=windows
项目根目录或根目录内部任意位置 — 右键 – [New] – [Python File] – 输入文件名
print("hello world")
文件打开状态 – 空白位置 — 右键 – Run – 即可调出Pycharm的控制台输出程序结果。
修改主题
修改代码文字格式:[Editor] – [Font]
修改解释器:[Project: 项目名称] – [Project Interpreter] – [设置图标] – [Add] – 浏览到目标解释器 – [OK] – [OK]。
打断点
Debug调试
输出面板
Debugger:显示变量和变量的细节
Console:输出内容
通过用自己熟悉的语言,在程序中对某些代码进行标注说明,这就是注释的作用,能够大大增强程序的可读性。
#单行注释
# 输出hello world
print('hello world')
#多行注释
"""
下面三行都是输出的作用,输出内容分别是:
hello Python
hello itcast
hello itheima
"""
print('hello Python')
print('hello itcast')
print('hello itheima')
变量就是一个存储数据的的时候当前数据所在的内存地址的名字而已。
标识符命名规则是Python中定义各种名字的时候的统一规范,具体如下:
由数字、字母、下划线组成
不能数字开头
不能使用内置关键字
严格区分大小写
见名知义。
大驼峰:即每个单词首字母都大写,例如:MyName。
小驼峰:第二个(含)以后的单词首字母大写,例如:myName。
下划线:例如:my_name。
my_name = 'TOM'
print(my_name)
schoolName = '燕大'
print(schoolName)
整型:int
浮点型:float
字符串:str
列表:list
布尔型:bool
元组:tuple
集合:set
字典:dict
#检测数据类型的方法:type()
a = 1
print(type(a)) # -- 整型
b = 1.1
print(type(b)) # -- 浮点型
c = True
print(type(c)) # -- 布尔型
d = '12345'
print(type(d)) # -- 字符串
e = [10, 20, 30]
print(type(e)) # -- 列表
f = (10, 20, 30)
print(type(f)) # -- 元组
h = {10, 20, 30}
print(type(h)) # -- 集合
g = {'name': 'TOM', 'age': 20}
print(type(g)) # -- 字典
作用:程序输出内容给用户
格式符号 | 转换 |
---|---|
%s | 字符串 |
%d | 有符号的十进制整数 |
%f | 浮点数 |
%c | 字符 |
%u | 无符号十进制整数 |
%o | 八进制整数 |
%x | 十六进制整数(小写ox) |
%X | 十六进制整数(大写OX) |
%e | 科学计数法(小写’e’) |
%E | 科学计数法(大写’E’) |
%g | %f和%e的简写 |
%G | %f和%E的简写 |
技巧
"""
1. 准备数据
2. 格式化符号输出数据
"""
age = 18
name = 'TOM'
weight = 75.5
stu_id = 1
stu_id2 = 1000
# 1. 今年我的年龄是x岁 -- 整数 %d
print('今年我的年龄是%d岁' % age)
# 2. 我的名字是x -- 字符串 %s
print('我的名字是%s' % name)
# 3. 我的体重是x公斤 -- 浮点数 %f
print('我的体重是%.3f公斤' % weight)
# 4. 我的学号是x -- %d
print('我的学号是%d' % stu_id)
# 4.1 我的学号是001
print('我的学号是%03d' % stu_id)
print('我的学号是%03d' % stu_id2)
# 5. 我的名字是x,今年x岁了
print('我的名字是%s,今年%d岁了' % (name, age))
# 5.1 我的名字是x,明年x岁了
print('我的名字是%s,明年%d岁了' % (name, age + 1))
# 6. 我的名字是x,今年x岁了,体重x公斤,学号是x
print('我的名字是%s,今年%d岁了,体重%.2f公斤,学号是%06d' % (name, age, weight, stu_id))
运行结果:
1.今年我的年龄是18岁
2.我的名字是TOM
3.我的体重是75.500公斤
4.我的学号是1
4.1我的学号是001
4.2我的学号是1000
5.我的名字是TOM,今年18岁了
5.1我的名字是TOM,明年19岁了
6.我的名字是TOM,今年18岁了,体重75.50公斤,学号是000001
代码同上
# 4.1 我的学号是001
print('我的学号是%03d' % stu_id)
print('我的学号是%03d' % stu_id2)
# 5. 我的名字是x,今年x岁了
print('我的名字是%s,今年%d岁了' % (name, age))
# 5.1 我的名字是x,明年x岁了
print('我的名字是%s,明年%d岁了' % (name, age + 1))
其它数据类型以字符串显示的时候,可以在格式化的时候,将原本对应类型的格式化符号换成%s
name = 'TOM'
age = 18
weight = 75.5
# 我的名字是x,今年x岁了,体重x公斤
print('我的名字是%s,今年%s岁了,体重%s公斤' % (name, age, weight))
运行结果:
我的名字是TOM,今年18岁了,体重75.5公斤
格式化字符串除了%s,还可以写为f'{表达式}'
name = 'TOM'
age = 18
# 我的名字是x,今年x岁了
print('我的名字是%s,今年%s岁了' % (name, age))
# 语法 f'{表达式}'
print(f'我的名字是{name},今年{age}岁了')
运行结果:
我的名字是TOM,今年18岁了
我的名字是TOM,今年18岁了
f-格式化字符串是Python3.6中新增的格式化方法,该方法更简单易读。
\n
:换行。\t
:制表符,一个tab键(4个空格)的距离。print('hello')
print('world')
print('hello\nPython')
print('\tabcd')
运行结果:
hello
world
hello
Python
abcd
# 以换行结尾
print('hello', end="\n")
# 以制表符
print('world', end="\t")
# 以...结尾
print('hello', end="...")
print('Python')
运行结果:
hello
world hello…Python
input("提示信息")
input
,等待用户输入,输入完成之后才继续向下执行。input
接收用户输入后,一般存储到变量,方便使用。input
会把接收到的任意用户输入的数据都当做字符串处理。password = input('请输入您的密码:')
print(f'您输入的密码是{password}')
#
print(type(password))
用户输入的数据是字符串类型,可以用类型转换将字符串类型转换为相应的数据类型。
函数 | 说明 |
---|---|
int(x [,base ]) | 将x转换为一个整数 |
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 ) | 将一个整数转换为一个Unicode字符 |
ord(x ) | 将一个字符转换为它的ASCII整数值 |
hex(x ) | 将一个整数转换为一个十六进制字符串 |
oct(x ) | 将一个整数转换为一个八进制字符串 |
bin(x ) | 将一个整数转换为一个二进制字符串 |
需求:input接收用户输入,用户输入“1”,将这个数据1转换成整型。
# 1. 接收用户输入
num = input('请输入您的幸运数字:')
# 2. 打印结果
print(f"您的幸运数字是{num}")
# 3. 检测接收到的用户输入的数据类型 -- str类型
print(type(num))
# 4. 转换数据类型为整型 -- int类型
print(type(int(num)))
# 1. float() -- 转换成浮点型
num1 = 1
print(float(num1))
print(type(float(num1)))
# 2. str() -- 转换成字符串类型
num2 = 10
print(type(str(num2)))
# 3. tuple() -- 将一个序列转换成元组
list1 = [10, 20, 30]
print(tuple(list1))
print(type(tuple(list1)))
# 4. list() -- 将一个元组转换成序列
t1 = (100, 200, 300)
print(list(t1))
print(type(list(t1)))
# 5. eval() -- 将字符串中的数据转换成Python表达式原本类型
str1 = '10'
str2 = '[1, 2, 3]'
str3 = '(1000, 2000, 3000)'
print(type(eval(str1)))
print(type(eval(str2)))
print(type(eval(str3)))
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 | 1 + 1 输出结果为 2 |
- | 减 | 1-1 输出结果为 0 |
* | 乘 | 2 * 2 输出结果为 4 |
/ | 除 | 10 / 2 输出结果为 5 |
// | 整除 | 9 // 4 输出结果为2 |
% | 取余 | 9 % 4 输出结果为 1 |
** | 指数 | 2 *** 4 输出结果为 16,即 2* 2 2 2 |
() | 小括号 | 小括号用来提高运算优先级,即 (1 + 2) * 3 输出结果为 9 |
注意:
()
高于 **
高于 *
/
//
%
高于 +
-
运算符 | 描述 | 实例 |
---|---|---|
= | 赋值 | 将= 右侧的结果赋值给等号左侧的变量 |
num = 1
print(num)
num1, float1, str1 = 12, 0.6, 'hello world'
print(num1)
print(float1)
print(str1)
a = b = 5
print(a)
print(b)
运算符 | 描述 | 实例 |
---|---|---|
+= | 加法赋值运算符 | c += a 等价于 c = c + a |
-= | 减法赋值运算符 | c -= a 等价于 c = c- a |
*= | 乘法赋值运算符 | c = a 等价于 c = c a |
/= | 除法赋值运算符 | c /= a 等价于 c = c / a |
//= | 整除赋值运算符 | c //= a 等价于 c = c // a |
%= | 取余赋值运算符 | c %= a 等价于 c = c % a |
**= | 幂赋值运算符 | c = a 等价于 c = c a |
a = 100
a += 1
# 输出101 a = a + 1,最终a = 100 + 1
print(a)
b = 2
b *= 3
# 输出6 b = b * 3,最终b = 2 * 3
print(b)
c = 10
c += 1 + 2
# 输出13, 先算运算符右侧1 + 2 = 3, c += 3 , 推导出c = 10 + 3
print(c)
比较运算符也叫关系运算符, 通常用来判断。
运算符 | 描述 | 实例 |
---|---|---|
== | 判断相等。如果两个操作数的结果相等,则条件结果为真(True),否则条件结果为假(False) | 如a=4,b=4,则(a == b) 为 True |
!= | 不等于 。如果两个操作数的结果不相等,则条件为真(True),否则条件结果为假(False) | 如a=3,b=3,则(a == b) 为 True如a=1,b=3,则(a != b) 为 True |
> | 运算符左侧操作数结果是否大于右侧操作数结果,如果大于,则条件为真,否则为假 | 如a=7,b=3,则(a > b) 为 True |
< | 运算符左侧操作数结果是否小于右侧操作数结果,如果小于,则条件为真,否则为假 | 如a=7,b=3,则(a < b) 为 False |
>= | 运算符左侧操作数结果是否大于等于右侧操作数结果,如果大于,则条件为真,否则为假 | 如a=7,b=3,则(a < b) 为 False如a=3,b=3,则(a >= b) 为 True |
<= | 运算符左侧操作数结果是否小于等于右侧操作数结果,如果小于,则条件为真,否则为假 | 如a=3,b=3,则(a <= b) 为 True |
a = 7
b = 5
print(a == b) # False
print(a != b) # True
print(a < b) # False
print(a > b) # True
print(a <= b) # False
print(a >= b) # True
运算符 | 逻辑表达式 | 描述 | 实例 |
---|---|---|---|
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 |
a = 1
b = 2
c = 3
print((a < b) and (b < c)) # True
print((a > b) and (b < c)) # False
print((a > b) or (b < c)) # True
print(not (a > b)) # True
在逻辑运算符中加上小括号,一来可以提升表达式运算的优先级,二来可以增加代码的可读性
a = 0
b = 1
c = 2
print((a < b) and (c > b))
and运算符:只要有一个值为0,则结果为0,否则结果为最后一个数字
or运算符:只有所有的值为0,结果才为0,否则结果为第一个非0数字
a = 0
b = 1
c = 2
# and运算符,只要有一个值为0,则结果为0,否则结果为最后一个非0数字
print(a and b) # 0
print(b and a) # 0
print(a and c) # 0
print(c and a) # 0
print(b and c) # 2
print(c and b) # 1
# or运算符,只有所有值为0结果才为0,否则结果为第一个非0数字
print(a or b) # 1
print(a or c) # 2
print(b or c) # 1