本章引言
任何计算机语言的学习都离不开其基础中的基础,即数据类型和运算;所以要学好一门语言必须具有扎实的基础,后期是否能够灵活使用就取决于第二章、第三章内容是否深而透。
变量含义
变量赋值
通过赋值运算符 = 变量名和想要赋予变量的值连接起来,变量的赋值操作就完成了声明和定义的的过程,在其他语言中需要制定类型;同一变量可以反复赋值,而且可以是不同类型的变量,这也是Python语言称之为动态语言的原因
示例:
>>>short_id=1
>>>print(short_id)
1
>>>type(short_id)
<type 'int'>
>>>short_>>>print(short_id)
1
>>>type(short_id)
<type 'str'>
变量名的命名规范
在第一章节中提到基本语法中的命名规则要素,命名规范主要有驼峰式和蛇形式,在python中变量名习惯一般遵守蛇形命名法(snake case):
-
一般变量名,wood_id、wood_program_id;
-
类名首字符为大写,如Python内置模块collections.abc中的Iterable类
-
类方法名:get_wood_id();
-
其他特殊变量,会全部大写,例如常量,MY_PI、MY_COUNT;
多个变量赋值
-
python允许同时为多个变量赋值。
表现形式为:number1=number2=number3....=值
例如:a = b = c = 1
-
python还可以实现多个变量赋值使用一个语句完成
表现形式:number1,numbe2,numbe3=1,2,3
说明:
多个变量赋值中涉及非常重要的两个概念:解包、封包
解包:实际就是将一组数据(元组)进行一一对应的赋值给每个变量,此种表示形式实际就是解包操作;
封包:如果一个变量进行赋予多个值的话,则表示的是该变量实际就是一个元组类型,该过程称之为封包操作;
因为此处涉及元组的概念,所以在元组中还会详细举例,请理解概念。
常量
常量表示“不能变”的变量Python中是没有常量的关键字的,只是我们常常约定使用大写字母组合的变量名表示常量,也有不要对其进行赋值”的提醒作用
PI=3.14159265
python数据类型
python语言的数据类型包括整型、浮点型、字符串、布尔型和空值整型(int)整型的取值为整数,有正有负,如 2,-666,666 等。在科比投篮数据集中,shot_id是整型变量
Python有五个标准的数据类型:
-
Numbers(数字)
-
String(字符串)
-
List(列表)
-
Tuple(元组)
-
Dictionary(字典)
本章主要讲以下几种基本类型:数值型、布尔型和空值特殊类型
数值型
a1.整型:在python中其默认的数据类型就是int类型;
>>>number=10
>>>type(number)
<type 'int'>
扩展说明:并且在python3.X中不存在long类型(已经舍去),理论上在python3.X版本中的int类型为无穷存储(最大的数值范围是2的六十四次方,可以通过sys模块中maxsize;在python2.X版本中则获取int的范围是通过sys.maxint)
a2.浮点型:其数据类型是float类型;
>>>number=1.1
>>>type(number)
<type 'float'>
扩展说明:
1.整形与浮点型之间可以实现数据类型的转换;转换使用函数int、float
2.在python中所有的值默认都是以十进制的形式进行表示;如果需要实现数值的进制转换的话,则可以分别调用与之对应的函数或者使用int类对象进行完成;例如:int(第一个参数必须是str类型的值,base=可以是2,8,10,16)还可以使用0b表示二进制数据进行转换成十进制,0o表示八进制转换成十进制,0x表示十六进制转换成十进制(对应的函数分别是:bin、oct、hex)
3.在计算机中都是以固定的多少位进行处理数据,如果一个数其转换成二进制不足指定的位的话,则其对应的高位会采取补位补0操作;
a3.复数类型:表示形式是由实部+虚部 (z=a+bi);在python中表示的虚部的单位必须是j;
>>>number=1+1j
>>>type(number)
<type 'complex'>
扩展说明:number=2+3j可以通过复数对象中的real和imag两个属性分别获取复数的实部和虚部的值注意:在python中同样存在对应的ASCII码转换;分别使用的函数是ord、chr;例如:ord(需要传入转换成整型的一个字符)、chr(需要传入整型数字)
bool类型
布尔值可以进行 and 、 or 和 not 运算, and 和 or 运算分别用 & 和 | 表示not 运算为非运算,即把 True 变成 False , False 变成 True
逻辑判定型;只存在两个值:True、False;常用的false的值有:""、0、[]、None、()、{}
>>>type(True)
<type 'bool'>
空值类型
空值是Python里一个特殊的值,用 None 表示,一般用 None 填充表格中的缺失值使用 type() 函数来获取某值的类型
>>>type(None)
<type 'NoneType'>
类型转换
函数 int()、float()、str() 和 bool() 分别用于将变量转换成整型、浮点型、字符串和布尔型变量
>>>number1=1.2
>>>int(number1)
1
>>>number2=2
>>>float(number2)
2.0
>>>number3=3
>>>str(number3)
'3'
>>>bool(number3)
True
思考:如果存在一个变量str1="hello",然后强制转换成int,即int(str1),其结果是?
isinstance用法
通过帮助查看如下:
作用:来判断一个对象是否是一个已知的类型;
其第一个参数(object)为对象,第二个参数为类型名(int...)或类型名的一个列表((int,list,float)是一个列表)。其返回值为布尔型(True or flase)。
若对象的类型与参数二的类型相同则返回True。若参数二为一个元组,则若对象类型与元组中类型名之一相同即返回True。
简单来说就是判断object是否与第二个参数的类型相同,举例如下:
# -*- coding: utf-8 -*-
test_str = '123'
print(isinstance(test_str,str))#判断test_str是否是字符串类型
test_int = 123
print(isinstance(test_int,int)) #判断ttest_int是否是int类型
test_float = 1.23
print(isinstance(test_float,float))#判断test_float是否是float类型
test_bool = True
print(isinstance(test_bool,bool))#判断test_bool是否是bool类型
ASCII码获取
实现ASCII码与字符相互转换:其中ord()与chr()函数均为Python内置函数。ord()函数接受一个字符类型参数,并返回一个十进制整数chr()函数则为ord()函数的配对函数,其接受一个整型参数,并返回一个与其ASCII码相对应的字符。
>>> ord('A')
65
>>> chr(65)
'A'
运算符
运算符和操作对象是计算机中比较常见的,任何的计算,都涉及到运算符和操作对象。数学学习的加(+)、减(-)、乘(*)、除(/)等都是运算符。操作对象就是由运算符连接起来的对象。以下为python常用运算符说明以及操作。
算术运算符
以下变量a为10,变量b为5:
运算符 |
描述 |
实例 |
+ |
加:两个对象相加 |
a+b输出结果15 |
- |
减:得到复数或者是一个数减去另一个数 |
a-b输出结果5 |
* |
乘:两个数相乘或者是返回一个被重复若干次的字符串 |
a* b输出结果是50 |
/ |
除:x除以y |
a/b输出结果2 |
% |
取模:返回除法的余数 |
b%a 输出结果0 |
** |
幂:返回x的y次幂 |
a** b 为10的5次方,输出结果100000 |
// |
取整除(地板除):返回商的整数部分 |
9//2输出结果4,9.0//2.0输出结果4.0 |
比较运算符
以下变量a为10,变量b为20:
运算符 |
描述 |
实例 |
== |
等于:比较对象是否相等 |
(a==b) 返回False |
!= |
不等于:比较两个对象是否不相等 |
(a!=b) 返回True |
> |
大于:返回x是否大于y |
(a>b) 返回False |
< |
小于:返回x是否小于y |
(a<b) 返回True |
>= |
大于等于:返回x是否大于等于y |
(a>=b) 返回False |
<= |
小于等于:返回x是否小于等于y |
(a<=b) 返回True |
赋值运算符
以下变量a为10,变量b为20:
运算符 |
描述 |
实例 |
-= |
减法赋值运算符 |
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 |
逻辑运算符
Python语言支持逻辑运算符,以下变量a为10,变量b为20:
运算符 |
逻辑表达式 |
描述 |
实例 |
And |
x and y |
布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y的计算值 |
(a and b) 返回 20 |
Or |
x or y |
布尔“或” - 如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值 |
(a or b) 返回 10 |
Not |
not x |
布尔“非” - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True |
not(a and b)返回False |
位运算符
运算符 |
描述 |
实例 |
& |
按位与运算符 |
(a&b)输出结果是12 二进制解释:0000 1100 |
| |
按位或运算符 |
(a|b)输出结果四61 二进制解释:0011 1101 |
^ |
按位异或运算符 |
(a^b)输出结果是49 二进制解释:0011 0001 |
~ |
按位取反运算符 |
(~a)输出结果是-61 二进制解释:1100 0011 在一个有符号二进制数的补码形式 |
<< |
左移动运算符:<<“右边的数指定移动的位数,高位丢弃,低位补0 |
a << 2 输出结果 240 ,二进制解释:1111 0000 |
>> |
右移动运算符 |
a >> 2 输出结果 15 ,二进制解释:0000 1111 |
扩展内容:原码、反码、补码
数字在自然界中抽象出来的时候,一棵树,两只猪,是没有正数和负数的概念的
计算机保存最原始的数字,也是没有正和负的数字,叫没符号数字
如果我们在内存分配4位(bit)去存放无符号数字,是下面这样子的
后来在生活中为了表示“欠别人钱”这个概念,就从无符号数中,划分出了“正数”和“负数”
正如上帝一挥手,从混沌中划分了“白天”与“黑夜”
为了表示正与负,人们发明了"原码",把生活应该有的正负概念,原原本本的表示出来
把左边第一位腾出位置,存放符号,正用0来表示,负用1来表示
但使用“原码”储存的方式,方便了看的人类,却苦了计算机
我们希望 (+1)和(-1)相加是0,但计算机只能算出0001+1001=1010 (-2)
这不是我们想要的结果!!
另外一个问题,这里有一个(+0)和(-0)
为了解决“正负相加等于0”的问题,在“原码”的基础上,人们发明了“反码”
“反码”表示方式是用来处理负数的,符号位置不变,其余位置相反
当“原码”变成“反码”时,完美的解决了“正负相加等于0”的问题
过去的(+1)和(-1)相加,变成了0001+1101=1111,刚好反码表示方式中,1111象征-0
人们总是进益求精,历史遗留下来的问题—— 有两个零存在,+0 和 -0
我们希望只有一个0,所以发明了"补码",同样是针对"负数"做处理的
"补码"的意思是,从原来"反码"的基础上,补充一个新的代码,(+1)
我们的目标是,没有蛀牙(-0)
有得必有失,在补一位1的时候,要丢掉最高位
我们要处理"反码"中的"-0",当1111再补上一个1之后,变成了10000,丢掉最高位就是0000,刚好和左边正数的0,完美融合掉了
这样就解决了+0和-0同时存在的问题
另外"正负数相加等于0"的问题,同样得到满足
举例,3和(-3)相加,0011 + 1101 =10000,丢掉最高位,就是0000(0)
同样有失必有得,我们失去了(-0) , 收获了(-8)
以上就是"补码"的存在方式
结论:保存正负数,不断改进方案后,选择了最好的"补码"方案
参考信息:运算符优先级
运算符 |
描述 |
** |
指数(最高优先级) |
~+- |
按位反转,一元加号、减号(最后两个方法名为+@和-@) |
* / % // |
乘、除、取模、取整除 |
+ - |
加法、减法 |
>> << |
右移、左移动运算符 |
^ | |
位运算符 |
<= < >= > |
比较运算符 |
<> != == |
等于运算符 |
= += -= * = /= ** = |
赋值运算符 |
is is not |
身份运算符 |
in not in |
成员运算符 |
not and or |
逻辑运算符 |
练一练
-
下列各赋值语句,语法不正确的是 ( )
A. x+y=5
B. BiNumber =15
C. Labell.caption =time
D. s_Length =x+y
-
下列给出的赋值表达式中正确的是( )
A.4 = M
B.-M = M
C.B = A – 3
D.X + Y = 0
-
下列程序运行后,变量x的值为( )
x=2
print(x+l)
print(x+2)
A、2
B、3
C、4
D、5
-
设a=2,b=3,c=4,d=5,下列表达式的值是( )。
a<=c or 4* c==b ^2 and b+c==d
A. -1
B.0
C. True
D. False
-
声明两个变量number1=”11”,number2=”22”计算上面两个变量的位与运算结果、位取反运算结果(公式:-(a+1)=-12 实际就是取当前数值原码所对应的反码)、左移动运算结果;要求写出其分析过程?
小结
Python第二章内容的学习,需要全面理解Python的基本数据类型的使用以及常用的运算符使用。
限时抢购对应文章视频课程红包: