Python声明:
1. 如果没有此文件编码类型的声明,则python默认以ASCII编码去处理如果你没声明编码,但是文件中又包含非ASCII编码的字符的话,python解析器去解析的python文件,自然就会报错了。
2. 必须放在python文件的第一行或第二行
3. 支持的格式,可以有三种:
① 带等于号的: # coding=<encoding name>
② 最常见的(大多数编辑器都正确识别)
#!/usr/bin/python
# -*- coding=<encoding name> -*-
③ Vim的:
#!/usr/bin/python
# vim: set fileencoding=<encoding name> :
#!/usr/bin/env python与#!/usr/bin/python的区别
#!/usr/bin/python是告诉操作系统执行这个脚本的时候,调用/usr/bin下的python解释器;
#!/usr/bin/env python这种用法是为了防止操作系统用户没有将python装在默认的/usr/bin路径里。当系统看到这一行的时候,首先会到env设置里查找python的安装路径,再调用对应路径下的解释器程序完成操作。
#!/usr/bin/python相当于写死了python路径;
#!/usr/bin/env python会去环境设置寻找python目录,推荐这种写法
注释:
#注释的作用:
#注释符号 :
单行用# 多行用''' 或 """
数据类型:
Python中可以自定义数据类型,可以具有无限种数据类型。
6种标准数据类型:1.Number类型 整型 2.String类型 字符串类型 3.List类型 列表类型 4.Tuple类型 元组类型 5.Set类型 集合类型 6.Dict类型 字典类型
整型:
0o是八进制 0b是二进制 0x是十六进制intvar = 3
查看变量值 print(intvar)
查看变量类型print(type(intvar))
浮点型: Float
(1) 小数方式
floatvar = 3.141592
Print (floatvar)
(2) 科学计数法
floatvar = 11e2 或 11e-2 # 相当于10正2负2的平方
布尔类型: Boolean
#该类型只有两个值 True 和 False
boolvar = False #不写引号
result = 5 > 3
print(result,type(result))
复数类型: Complex
例子:
Comvar = 5 + 3j 可以+—*/
Comvar = (5 ,4)
字符类型: String
单引号:
变量 = '内容'
双引号:
变量 = "内容"
三引号:
变量 = '''内容'''
变量 = """内容"""
例子:
Strvar = '3' 3 与‘3’ 两者类型不同,
\\ 反斜杠符号(\)
\ 续行
\' 单引号
\" 双引号
\n 换行 *
\v 纵向制表符
\t 横向制表符 *Tab
\r 回车 *表示回到当前行的开头从新输出 回车和回车键完全不同
回车键:\r\n (windows下) 或者 \n (linux) 或者 \r (unix 早期mac) 表示换行
#元字符串: 字符串前面加R或r,就不显示转义符号
列表类型: List
代表符号 [ ]
例子:
List_1 = ['胡','宏','002']
print (List_1[2]) # 获取某个数据
List_1[2] = '003' #修改某个数据
List_1.append('d') #添加数据
List_1.insert(1,'f') #指定插入某个位置
List_1.pop()或List_1.pop(i) #删除末尾元素或指定元素
元组类型 : Touple
例子:Tuplevar = ('001','002','003') #新建一个数据的元组,必须带有一个逗号,括号有没有无所谓
空值是var = ()
Tuplevar[1]='004' #元组型无法修改数据
字典类型: Dict
字典就是具有键值映射关系的一组无序数据组合,可以修改
例子:dictvar = {'伟大':'祖国','三国':'曹操','水浒':'宋江'}
print (dictvar['伟大'])
dictvar['伟大'] = '五千年'
print (dictvar)
集合类型 Set类型 没有标志符号
一组特定数据的无序组合,所有数据不会重复(基本功能包括关系测试和消除重复元素,无法修改数据)
空值为set()
例子:setvar = {1,1,33,44,55,33,4}转换
print(setvar)
数据类型的转换
#分类: 自动数据类型转换(隐式转换)和强制数据类型转换(显示转换)
#自动类型转换
1. 自动类型转换在适当时候自动发生无需人工干预
2. 自动类型转换多发生在运算或者判断过程当中
3. 运算自动类型转换会向着更加精确的数据类型转换
#强制类型转换
1. 整数不需要转换
2. 浮点数转换为整数,去掉小数部分
3. 布尔值 True转换为1 False转换为0
4. 复数无法转换
5. 字符串,仅有整数和浮点数的字符串可以转换,其余都不行
6. 列表元组集合字典无法转换
#布尔值转换
能够转换为false 的情况:
整型:0 布尔值:False
浮点数:0.0 复数: 0j
字符串:空的字符串
空的列表元组字典集合 转换为False,其余都为1
#复数转换
1、整型转换之后 +0j
2、浮点数转换 +0j
3、布尔值 True ->1 + 0j False -> 0j
4、复数无需转换
5、字符串:整数和浮点数字符串可以转换 先转换为对应的实数 +0j
6、列表元组字典集合 无法转换
#字符串转换
任何数据转换为字符串都是原样输出
查看转换过程 repr()
#列表转换
#容器:能够同时存放多个数据类型成为容器:元组,列表,字典集合还有字符串
字符串:转换之后,每个字符赋成为列表中的每一个数据
元组:转换之后内容和顺序不变
列表:无需转换
集合:转换之后内容不变,顺序随机
字典:转换之后,仅将目录提取出来转换为列表,值舍弃
#元组转换
字符串:转换之后,每个字符赋成为元组中的每一个数据
元组:无需转换
列表:转换之后内容和顺序不变
集合:转换之后内容不变,顺序随机
字典:转换之后,仅将目录提取出来转换为元组,值舍弃
#集合转换
字符串:转换之后,每个字符赋成为集合中的一个数据,顺序随机,重复数据,只保留一份
元组:转换之后,顺序随机,重复数据只保留一份
列表:转换之后,顺序随机,重复数据只保留一份
集合:无需转换
字典:转换之后,仅将目录提取出来转换为集合,值舍弃
#字典转换
字符串:无法转换为字典
列表,元组,集合转换成字典必须保证为二级容器,并且第二级必须有2个数据
二级集合,目前只能放元组 不能放列表,集合,字典
例子:二级列表: var = [
[‘zj’,’钟馗’],
[‘zj’,’钟无言’],
]
二级集合: var = {
(‘zj’,’钟馗’),
(‘zj’,’钟无言),
}
算法运算:
加法运算 + , 减法运算 -, 乘法运算 *,除法运算 / ,取余运算 %,取商运算 // (地板除),幂运算 **a = 1 + 1 a = 2 / 1 a = 4 % 3 a = 4 ** 3 a = 5 // 3
比较运算:
大于运算 > ,小于运算 <,大于等于运算>=,小于等于运算<=,等与运算==,不等于运算 !=
例子:
Result = 6 > 3
Print (result)
Result = 6 < 3
Print (result)
Result = 6 >= 3
Print (result)
Result = 6 <= 3
Print (result)
Result = 6 == 3
Print (result)
Result = 6 != 3
Print (result)
Result = ‘5’ == 5 #只要类型(6大类型)不相同 就是不等于
赋值运算:
Var = 10
Var = var +5 # 可写成var += 5 (注:需等号两边是同一个变量)
Print (var)
逻辑运算:
逻辑与运算 (有假则假)
Result = False and False
逻辑或运算 (有真则真)
Result = False or False
逻辑非运算 (真变假,假变真)
Result = not True
异或运算 (相同为假,不同为真)(Python中无此运算)
Result = False xor True
python中 and 和 or 运算的核心思想 ——— 短路逻辑
表达式从左至右运算,若 or 的左侧逻辑值为 True ,则短路 or 后所有的表达式(不管是 and 还是 or),直接输出 or 左侧表达式 。
表达式从左至右运算,若 and 的左侧逻辑值为 False ,则短路其后所有 and 表达式,直到有 or 出现,输出 and 左侧表达式到 or 的左侧,参与接下来的逻辑运算。
若 or 的左侧为 False ,或者 and 的左侧为 True 则不能使用短路逻辑。
位运算:
1. 按位与运算 &
运算规则:0&0=0; 0&1=0;1&0=0;1&1=1;即:两位同时为“1”,结果才为“1”,否则为0【有0则0】
例子:n1 = 2 n2 = 4 result = n1 & n2
2. 按位或运算 |
运算规则:0|0=0;0|1=1;1|0=1;1|1=1;即 :参加运算的两个对象只要有一个为1,其值为1【有1则1】
例子:n1 = 2 n2 = 4 result = n1 | n2
3. 按位非运算 ~ #正数=负数加1 负数=正数减一
将一个数字的二进制形的每一个二进制数字取反所得到的结果
例子:n1 =200 result = ~n1
4. 按位异或运算 ^
运算规则:0^0=0;0^1=1;1^0=1;1^1=0;即:参加运算的两个对象,如果两个相应位为“异”(值不同),则该位结果为1,否则为0【同0异1】
例子:No1 = 24 no2 = 17 result = no1 ^ no2
5. 左移运算 左移一位相当于*2
形式: A << n; #A是一个要被移动的数字
6. 右移运算 右移一位相当于//2
形式: A >> n;#/A是一个要被移动的数字
成员检测:
in 检测一个数据是否在制定的容器当中
not in 检测一个数据是否不再制定的容器当中
lists = ['刘涛','zhaowei','linxinru']
result = 'ls' in lists
print (result)
#检测数据是否不在容易当中
list = {'11','22','33','44'}
result = 'ls' not in lists
print (result)
dict = {'11':'22','33':'44'} ##成员检测对于字典而言 仅仅检测字典的目录而不是检测的值!
result = '22' in list
print (results)
#身份检测运算
is 检测两个变量的数据是否是同一个数据
is not 检测两个变量的数据是否不是同一个数据
'''
以下内容根据python版本的不同,结果可能有出入
整数:-5 ~ 正无穷 值相同id就相同
浮点数: 0 ~ 正无穷 值相同id就相同
布尔值:值相同id就相同
复数:都不同
字符串:只要内容相同id就相同
列表,元组,字典,集合 都不同
no1 = -5 no2 = -5
result = no1 is no2
print (result)
#以下写法 身份检测 ID永远相同
no1 = no2 = -100
#print (id(no1))
#print (id(no2))
result = no1 is no2
print (result)
运算优先级的问题
写程序遇到优先级问题可以使用()解决,更方便,也更易读
#类型检测的推荐方法
var = 10
#该方式仅适用于学习过程种的测试,代码开发种不要使用!
print(type(变量))
#isinstance () 检测数据是否是制定的某种数据类型
result = isinstance(变量,检测的类型)# 不要加''
print(result)
#检测数据是否是整型或者浮点型
var=11
result = isinstance(vr,(int,float))
#result = isinstance(变量,(检测的类型,检测的类型))
print(result)