python数据运算

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'>
type

布尔值:

1为True()真;0为False

>>> bool(1)
True
>>> bool(0)
False
>>>
bool

运算符:

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
loop

每次遍历,打印一个数字的序列,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("猜了太多次")
View Code

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("猜试了太多次")
View Code

1.5其他:

1、enumrate 为可迭代的对象添加序号
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

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'>
type

布尔值:

1为True()真;0为False

>>> bool(1)
True
>>> bool(0)
False
>>>
bool

运算符:

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
loop

每次遍历,打印一个数字的序列,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("猜了太多次")
View Code

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("猜试了太多次")
View Code

1.5其他:

1、enumrate 为可迭代的对象添加序号
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

猜你喜欢

转载自www.cnblogs.com/bubu99/p/10166367.html