>编写python程序的文件,称为python的脚本或程序
>要求当前的python脚本的文件后缀名必须是.py
#### pycharm使用注意
> 需要明确的知道你当前pycharm选择的python环境
#### 注释
> 注释就是一段说明文字,并不会被执行
> 在python的脚本中,开头的第一个字符如果是 # 那么就是注释了
#### print() 输出函数
> print可以在程序中输出一些内容,字符串,数字。。。
> 函数就是为了完成一些功能,例如:print就是为了输出数据
#### 变量 
```python
# 什么是变量?
# 变量就是用一个英文字符串来记录或标记一些数据,并且这个被标记的数据是可以变化的
# num = 10 的理解
# 就是把数据 10 赋值给变量 num使用,之后就可以使用num来代替这个10的数据
```
#### 命名规范
变量的命名要有规范
+ 变量名可以使用字母,数字,下划线_,
+ 不能以数字开头
+ 严格区分大小写
+ 不要使用中文
+ 不要使用关键字 if else True False print
**另外 变量的命名规范适用于脚本名称和后期的函数名及其它命令规范**
### 变量的定义方式
> 定义变量时 要注意遵守变量命名规范
```python
#第一种 变量定义方式
a = 10
b = 20
#第二种定义方式
a,b = 30,40
```
#### 思考:如何实现 以下两个变量的数据相互交换
```python
# 定义两个变量
a = 10
b = 20
# 交换两个变量的值
# 。。。
'''
普通方式,完成变量数据的交换
1,把a变量的值 赋值给c ,此时 c变量中 就是 10
2,把b变量的值 赋值给a , 此时 a变量中 就是 20
3,把c变量的值 赋值给b , 此时 b变量中 就是 10
'''
# c = a
# a = b
# b = c
# 利用python定义比变量的语法来实现 变量的数据交换
a,b = b,a
```
## python的数据类型
### 什么是数据类型?
> 数据类型就是数据的表现形式
>
> 比如 你好 就是一个字符串,200 就是一个数字
>
> 在程序当中除了这种常用的字符和数字外还有很多其它的数据表现形式
#### type() 函数,可以返回当前的数据类型
```python
s = 'iloveyou'
res = type(s) 
print(res) # <class 'str'> str == string
```
### 1. 字符串类型
- 单双引号都可以定义字符串
- 三引号也可以定义字符串
- 单双引号定义的字符串不能随意换行,需要在换行时指明换行符
- 字符串中的引号可以互相嵌套,但是不能嵌套自己(例如不能在单引号中嵌套单引号,除非转义)
- 字符串中可以使用转义字符,如 \r \n \t ...
- 如果不想在字符串中实现转义字符可以在字符定义时 加 `love = r'\nihao \shijie'`
```python
# 定义方式就是使用 单引号 或者 双引号
love = 'iloveyou'
hello = "你好 世界"
# 也可以使用三引号实现大字符串的定义,一般用于大文本字符串的定义,并且大字符串,可以换行
s = '''
比如说这一个
很长很长的文章内容。。。'''
```
### 2.数字类型
+ int  整型
+ float 浮点类型
+ complex 复数+ bool 布尔类型(True,False)
```python
# 数字类型 Number
'''
int  整型
float 浮点类型
complex 复数bool 布尔类型(True,False)
'''
varn = 521
varn = -1111
varn = 3.1415926
varn = 0x10 # 十六进制
varn = b'001100111' # bytes
# 复数
varn = 5+6j # complex# 布尔类型 bool
varn = True
varn = False
# print(varn,type(varn))
# 数值类型可以参与运算
a = 10
b = 20
print(a+b)
```
### 3.List列表类型
+ 列表用来表示一系列数据,例如: 需要记录一组数字或其它数据
+ 列表中存储的数据可以是任意类型的
+ 在需要记录多个数据时,可以使用中括号进行定义 [],
+ 并且每个数据之间使用逗号分隔 ,
+ 例如以下数据,定义了几组数字
+ 列表中存储的每一组数据,称为元素
+ 列表中存储的数据,可以通过下标的方式进行获取
+ 那么列表中元素的值可不可以存储一个列表,称为 二级列表(二维列表) 或者 多级列表 (多维列表)
```python
'''
关于列表中的下标
 0  1  2  3  4 
['a','b',521,'pai',3.1415926]
 -5  -4  -3 -2  -1
'''
```
### 4. tuple 元组类型的定义
+ 在定义多个数据内容时,可以选择使用List列表类型
+ 还可以使用元组类型来定义,
+ 元组和列表非常像,都时用于存储多个数据时使用
+ 元组使用小括号进行定义(),列表使用中括号进行定义
+ **元组的最大特点就是值不能被改变**
```python
vart = (1,2,3,'a','b')
# 元组的其它定义方式
vart = 1,2,3
```
##### 注意在定义元组时,如果元组中只有一个元素,那么需要加, 不然就不是元组类型了
### 5.Dict字典类型
+ 字典也是用于存储一组或多组数据时使用,使用大括号 {}来定义
+ 字典是 键值对 的存储方式 name :admin
+ 键和值之间使用冒号进行分隔,多组键值对之间使用逗号分隔
+ 键必须是字符串或数字类型,值可以是任意类型
+ 键名不能重复,值可以重复
```python
# 比如需要记录一本书的相关数据 书名,作者,价格,。。。
vard = {'title':'<<鬼谷子>>','author':'鬼谷子','price':'29.99'}
# print(vard,type(vard))
# {'title': '<<鬼谷子>>', 'author': '鬼谷子', 'price': '29.99'} <class 'dict'>
# 获取字典中的值
print(vard['title'])
# 字典中的键不能重复使用,否则会覆盖
vard = {'a':10,'b':10,'c':20,'a':'aa',1:'abcdef','2':'2222'}
# print(vard)
```
##### tip: 在python之前的版本中,字典是无序的
---
### 6.set集合类型
+ set集合是一个 无序且元素不重复的 集合的数据类型
+ set集合使用 中括号或者set()方法来定义
+ 如果需要定义一个空集合时 只能使用 set()方法,因为大括号时定义的空字典
+ 集合主要用于运算,交集,差集,并集,对称集合
```python
a = {1,2,3,'a'}
# 给集合添加元素
# a.add('b')
# 无法获取集合中的单个元素,但是可以添加和删除
# a.discard('a')
# print(a)
# 检查当前的元素是否在集合中
# print(1 in a)
# 集合主要用于运算,交集,差集,并集,对称集合
a = {1,2,3,'a','b'}
b = {1,'a',22,33}
print(a & b) # 交集 {1, 'a'}
print(a - b) # 差集 {'b', 2, 3} a 集合有,b集合没有的
print(a | b) # 并集 {1, 2, 3, 33, 'a', 'b', 22} 两个集合,放到一起,并且去重
print(a ^ b) # 对称差集 {33, 2, 3, 'b', 22} 
```
### 总结数据类型
```python
'''
字符串 string
数字类型 Number
  整型 int
  浮点 float
  复数
  布尔 bool
列表 list
元组 tuple
字典 dict
集合 set
可变数据类型:列表,字典,集合
不可不数据类型: 字符串,数字,元组
容器类型数据 : 字符串,列表,元组,集合,字典
非容器类型数据: 数字,布尔类型
'''
```
## 数据类型转换
+ 什么是数据类型转换?
  + 把一个数据类型转换为另一个数据类型,例如 字符串转为数字
+ 为什么需要数据类型转换?
  + 因为不同的数据类型之间不能运算
+ 数据类型转换的形式?
  + 自动类型转换
  + 强制类型转换
#### 自动类型转换
```python
# 自动类型转换
# 当两个不同的值进行运算时,结果会向更高的精度进行计算
# True ==> 整型 ==> 浮点 ==> 复数
a = 123
b = True # 在和数字运算时 True转为数字1,False转为数字 0
# print(a+b)
# print(12.5+22)
# print(True+3.14)
```
### 强制类型转换
> python中的每个数据类型都有对应的方法,可以对数据类型进行转换
+ str() 可以把所有的其它数据类型转换为字符串类型
+ int() 字符串转数字类型时,如果字符串中时纯数字,可以转换
  + 其它容器类型不能转为数字int类型
+ float() 浮点类型的转换和int类型一样,不过转换的结果是浮点类型
+ bool() 可以把其它类型转换布尔类型的True或False
  + 总结,哪些情况转bool的结果是 False
  + `'',0,0.0,False,[],{},(),set()`
+ list() 列表
  + 数字类型是 非容器类型,不能转换为列表
  + 字符串 转换为列表时 会把字符串中的每一个字符当做列表的元素
  + 集合 可以转换为 list列表类型
  + 元组 可以转换为 list列表类型
  + 字典 可以转换为 list列表类型,只保留了字典中的键
+ tuple() 元组
  + 数字类型 非容器类型,不能转换为元组
  + 其它容器类型的数据进行转换时,和列表一样
+ set() 集合
  + 数字类型 非容器类型,不能转换为 集合
  + 字符串,列表,元组 可以转为 集合 结果是无序的
  + 字典转换为集合时,只保留了字典的键 key
+ dict() 字典
  + 数字类型 非容器类型,不能转换为 字典
  + 字符串不能直接转换为 字典
  + 列表可以转换为字典,要求是一个二级列表,并且每个二级元素只能有两个值
  + 元组可以转换为字典,要求是一个二级元组,并且每个二级元素只能有两个值