1.数据类型
python使用对象模型来存储数据,每一个数据类型都有一个内置的类,每新建一个数据,实际就是一个对象,即所有数据都是对象。
对象的3个特性:
- 身份:即内存地址,可以用id()来获取
- 类型:决定了该对象保存的类型,需要遵循什么规则,可用type()来获取该数据类型
- 值:对象的保存的的真实数据
标准的数据类型:
数字、字符串、列表、元祖、字典
其他类型:
Null、文件、集合、函数、类、模块
1.1数字类型分类
数字类型分为:int()整型、long()长整型、float()浮点型、 complex()复数、bool()布尔值
python2.x区分整型,长整型 ; python3.x的整型和长整型,都是整型,无长整型。
查看数据类型:
1 c:>python 2 Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:18:55) [MSC v.1900 64 bit (AMD64)] on win32 3 Type "help", "copyright", "credits" or "license" for more information. 4 >>> print(type(12)) 5 <class ‘int‘> 6 >>> print(type(12.12)) 7 <class ‘float‘> 8 >>> print(type("xixihaha")) 9 <class ‘str‘>
布尔值:
1为True()真;0为False
>>> bool(1) True >>> bool(0) False >>>
运算符:
1.算数运算符 +加, -减, *乘 ,/除 ,%取余, **幂 ,//取整除 2.赋值运算 =, += ,-= ,*= ,/= ,%= ,**=, //= 3.比较运算 == ,!=(<>), >, < ,>= ,<= 4.逻辑运算 and , or , not 5.成员运算 in , not in
1.2数据运算
a = 10 ,b = 20
1.2.1算术运算
操作符 | 描述符 | 示例 |
---|---|---|
+ | 加法 - 对操作符的两侧增加值 | a + b = 30 |
- | 减法 - 减去从左侧操作数右侧操作数 | a - b = -10 |
* | 乘法 - 相乘的运算符两侧的值 | a * b = 200 |
/ | 除 - 由右侧操作数除以左侧操作数 | b / a = 2 |
% | 模 - 由右侧操作数和余返回除以左侧操作数 | b % a = 0 |
** | 指数- 执行对操作指数(幂)的计算 | a**b = 10 的幂 20 |
// | 取整除 - 操作数的除法,其中结果是将小数点后的位数被除去的商。 | 9//2 = 4 而 9.0//2.0 = 4.0 |
1.2.2比较运算
运算符 | 描述符 | 示例 |
---|---|---|
== | 检查,两个操作数的值是否相等,如果是则条件变为真。 | (a == b) 不为 true. |
!= | 检查两个操作数的值是否相等,如果值不相等,则条件变为真。 | (a != b) 为 true. |
<> | 检查两个操作数的值是否相等,如果值不相等,则条件变为真。 | (a <> b) 为 true。这个类似于 != 运算符 |
> | 检查左操作数的值是否大于右操作数的值,如果是,则条件成立。 | (a > b) 不为 true. |
< | 检查左操作数的值是否小于右操作数的值,如果是,则条件成立。 | (a < b) 为 true. |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是,则条件成立。 | (a >= b) 不为 true. |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是,则条件成立。 | (a <= b) 为 true. |
1.2.3赋值运算
运算符 | 描述符 | 示例 |
---|---|---|
= | 简单的赋值运算符,赋值从右侧操作数左侧操作数 | c = a + b将指定的值 a + b 到 c |
+= | 加法AND赋值操作符,它增加了右操作数左操作数和结果赋给左操作数 | c += a 相当于 c = c + a |
-= | 减AND赋值操作符,它减去右边的操作数从左边操作数,并将结果赋给左操作数 | c -= a 相当于 c = c - a |
*= | 乘法AND赋值操作符,它乘以右边的操作数与左操作数,并将结果赋给左操作数 | c *= a 相当于 c = c * a |
/= | 除法AND赋值操作符,它把左操作数与正确的操作数,并将结果赋给左操作数 | c /= a 相当于= c / a |
%= | 模量AND赋值操作符,它需要使用两个操作数的模量和分配结果左操作数 | c %= a is equivalent to c = c % a |
**= | 指数AND赋值运算符,执行指数(功率)计算操作符和赋值给左操作数 | c **= a 相当于 c = c ** a |
//= | 地板除,并分配一个值,执行地板除对操作和赋值给左操作数 | c //= a 相当于 c = c // a |
1.2.4位运算
操作符 | 描述符 | 示例 |
---|---|---|
& | 二进制和复制操作了一下,结果,如果它存在于两个操作数。 | (a & b) = 12 即 0000 1100 |
| | 二进制或复制操作了一个比特,如果它存在一个操作数中。 | (a | b) = 61 即 0011 1101 |
^ | 二进制异或运算符的副本,如果它被设置在一个操作数而不是两个比特。 | (a ^ b) = 49 即 0011 0001 |
~ | 二进制的补运算符是一元的,并有“翻转”位的效果。 | (~a ) = -61 即 1100 0011以2的补码形式由于带符号二进制数。 |
<< | 二进位向左移位运算符。左操作数的值左移由右操作数指定的位数。 | a << 2 = 240 即 1111 0000 |
>> | 二进位向右移位运算符。左操作数的值是由右操作数指定的位数向右移动。 | a >> 2 = 15 即 0000 1111 |
1.2.5逻辑运算
运算符 | 描述 | 示例 |
---|---|---|
and | 所谓逻辑与运算符。如果两个操作数都是真的,那么则条件成立。 | (a and b) 为 true. |
or | 所谓逻辑OR运算符。如果有两个操作数都是非零然后再条件变为真。 | (a or b) 为 true. |
not | 所谓逻辑非运算符。用于反转操作数的逻辑状态。如果一个条件为真,则逻辑非运算符将返回false。 | not(a and b) 为 false. |
1.3for循环
for循环语句,可用来遍历任何序列的项目。
列
#!/usr/bin/env python #-*- coding:utf-8 -*- for i in range(10): print("loop",i)
输出
1 loop 0 2 loop 1 3 loop 2 4 loop 3 5 loop 4 6 loop 5 7 loop 6 8 loop 7 9 loop 8 10 loop 9
每次遍历,打印一个数字的序列,range()是生成一个数字序列
break和continue
1 for i in range(10): 2 if i>5: 3 break #跳出本层循环 4 print("loop:", i )
1 for i in range(10): 2 if i<5: 3 continue #跳出(结束)本次循环,直接进入下一次循环 4 print("loop:", i )
for else语法:如果for循环没有被break终止(for循环正常走完),就执行else语句
列如:猜年龄,猜5次,猜正确了,退出;5次没猜正确,就执行else
1 #!/usr/bin/env python 2 xixi_age = 20 3 for i in range(5): 4 guess_age = int(input("age:")) 5 if xixi_age == guess_age: 6 print("正确") 7 break 8 elif guess_age >20: 9 print("猜大了") 10 else: 11 print("猜小了") 12 else: 13 print("猜了太多次")
1.4while循环
while循环的判断条件的为True,会一直循环;当判断条件为false,循环结束
列如:猜测年龄10次
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 xixi_age = 20 5 count = 0 6 while count < 10: 7 guess_age = input("请输入用户年龄:") 8 if guess_age.isdigit(): 9 guess_age = int(guess_age) 10 else: 11 count +=1 12 continue 13 14 if xixi_age == guess_age: 15 print("正确") 16 break 17 elif guess_age >20: 18 print(" guess smaller") 19 else: 20 print(" guess bigger") 21 count +=1 22 else: 23 print("猜试了太多次")
1.5其他:
user=[‘tom‘,‘rose‘,‘jack‘] for k,v in enumerate(user): print(k,v) """ 0 tom 1 rose 2 jack """ user=[‘tom‘,‘rose‘,‘jack‘] for k,v in enumerate(user,25): print(k,v) """ 25 tom 26 rose 27 jack """
2.for循环
user=[‘tom‘,‘rose‘,‘jack‘] for item in user: print(item) """ tom rose jack """
3.range范围
for item in range(10): print(item) """ 0 1 2 3 4 5 6 7 8 9 """ for item in range(5,10): print(item) """ 5 6 7 8 9 """ for item in range(5,10,2): print(item) """ 5 7 9 """ for item in range(5,10,-2): print(item) """ 没有任何效果 """ for item in range(10,5,2): print(item) """ 没有任何效果 """ for item in range(10,5,-2): print(item) """ 10 8 6 """
4.注释
当行注视:# 被注释内容,多行注释:""" 被注释内容 """
5.文件头
#!/usr/bin/env python # -*- coding: utf-8 -*-
6.变量规范
命名:下划线(推荐使用) user_num=20 #1. 变量名只能是 字母、数字或下划线的任意组合 #2. 变量名的第一个字符不能是数字 #3. 关键字不能声明为变量名[‘and‘, ‘as‘, ‘assert‘, ‘break‘, ‘class‘, ‘continue‘, ‘def‘, ‘del‘, ‘elif‘, ‘else‘, ‘except‘, ‘exec‘, ‘finally‘, ‘for‘, ‘from‘, ‘global‘, ‘if‘, ‘import‘, ‘in‘, ‘is‘, ‘lambda‘, ‘not‘, ‘or‘, ‘pass‘, ‘print‘, ‘raise‘, ‘return‘, ‘try‘, ‘while‘, ‘with‘, ‘yield‘]
7.id value type (等号比较的是value,is比较的是id)
可变类型:在id不变的情况下,value可以变,则称为可变类型,如列表,字典
不可变类型:value一旦改变,id也改变,则称为不可变类型(id变,意味着创建了新的内存空间)
str1=‘hello world‘ str2=‘hello world‘ print(id(str1)) #8205552 print(id(str2)) #8205552 print(str1 is str2) #True print(str1==str2) #True str1=‘22‘ str2=22 print(id(str1)) #12234008 print(id(str2)) #1403847792 print(str1 is str2) #False print(str1==str2) #False