Python学习笔记(2-1):基础知识之数据类型、定义变量与运算符
文章导读
- 课程难度:★★☆☆☆
- 预计学习时间:1小时
- 简介:本节讲解了学习Python的必备基础知识:(1)数据类型:包括三种基础数据类型(数值型、布尔型和字符串型),和两个相对特例的数据类型
(二、八、十六进制数据和复数);(2)如何定义变量以及标识符的限制条件;(3)常用运算符和字符的介绍与使用方法。
- 重点涉及的函数和内容:(1) type()函数查看数据类型;(2) 分别利用函数bin()、oct()、hex()将十进制数据用二进制、八进制、十六进制数据表示;
(3) complex()函数定义复数;(4) 各种运算符和字符;(5) 赋值与运算符的结合。
一、 数据类型
1、 基础数据类型
Python有多种数据类型,日常使用的主要包括三类,分别为数值型、布尔型和字符串型。
(1)数值型
数值型数据,常用的包括整型和浮点型。浮点型的整数可以通过在整数后面追加小数点进行定义。此外,还可以用科学计数法的数值表示形式,e
后面数字代表10的次方数。几种形式数值的定义如下:
print(1)
print(1.0)
print(1.)
print(2.7e4)
(2) 布尔型
布尔变量也称逻辑变量,包括True
和False
。True和False在数值表示下分别是0和1
print(True)
print(False)
(3 )字符串型
字符串里,用单引号' '
或者双引号" "
括起来都是可以的
print('Hello World - 1')
print("Hello World - 2")
除了上述基本类型之外,还有一个重要的类型,即空类型,其值是None
,我们会在第6章中综合描述各种“空值”,在此不做过多讲解。
另外,我们可以利用 type()
函数,查看一个值或变量的数据类型:
print(type(1.0))
输出结果如下:
<class 'float'>
这些数值之间可以进行格式转换,其方法涉及到了函数的应用,我们将在本章函数部分讲解完后,将格式转换函数作为函数讲解的例子,来介绍各个数据类型间格式转换的方法。
2、 各种进制的数据
整型数据有四种进制表示,分别为:二进制、八进制、十进制、十六进制,说明如下表所示。我们一般的数据输出都是以十进制表示的,但是为了一些运算的方便,有时我们需要将之改成其他进制的。
种类 | 描述 | 引导符 |
---|---|---|
二进制 | 由 0 和 1 组成 | 0b 或 0B |
八进制 | 由 0 和 7 组成 | 0o 或 0O |
十进制 | 默认情况 | 无 |
十六进制 | 由 0 到 9、a 到 f、A 到 F 组成,不区分大小写 | 0x 或 0X |
(1) 初始化
对于二进制、八进制、十六进制的数据的初始化,可以分别在数据之前加0b
、0o
、0x
,表示后面的数据分别是二、八、十六进制的形式。
但是,初始化数据的结果、各类进制数据参与计算的运算结果都是以十进制表示。例如我们分别初始化一个二进制、八进制和十六进制的数据并求和:
print(0b1011, 0o12, 0x29)
print(0b1011 + 0o12 + 0x29)
输出结果如下:
11 10 41
62
(2) 用二进制、八进制和十六进制表示十进制数据
将十进制数据以二进制、八进制、十六进制表示,我们可以分别用bin()
、oct()
、hex()
函数,但转换出来的结果是一个字符串,所以另有一种方式是利用字符串格式化的函数format()
进行处理:
print(bin(20))
print(oct(20))
print(hex(20))
print(format(20, '#b'))
print(format(20, '#o'))
print(format(20, '#x'))
输出结果如下:
0b10100
0o24
0x14
0b10100
0o24
0x14
3、 复数
(1) 定义
在python中,我们以“a + bj”的形式定义一个复数,手工定义一个复数最好用括号将实部和虚部括起来。或者,可以用complex()
函数定义一个复数,即可以传递实部和虚部的数值,也可以传递一个表示复数的字符串(这个字符串除了头尾外不要有空格):
print(2 + 3j)
print(complex(2, 3))
print(complex('2+3j'))
上述三个表达式都输出了虚数2+3j,输出结果如下:
(2+3j)
(2+3j)
(2+3j)
(2) 属性: .real和.imag
对于虚数的实部和虚部,可以用.real
和.imag
属性分别进行访问:
print((2 + 3j).real) #取复数x的实部
print((2 + 3j).imag) #取复数x的虚部
输出结果如下:
2.0
3.0
二、 变量的定义与标识符
1、 定义变量
定义变量是用一个固定的名称指示一个可变值的过程。定义变量用等于号=
表示,定义一个变量的过程例如:
a = 1
b = 25
print(a)
print(b)
名称为a的变量的当前值为1,名称为b的变量的当前值为25
输出结果如下:
1
25
这里的a, b叫做标识符。我们定义变量以及后面的函数等,都是通过标识符指示待定义对象的名称。
2、 标识符名称的限制
需注意,标识符的名称有如下限制:
- 由字母、数字和下划线“_”构成
- 开头不能是数字
- 不能是保留字符。在这里看上去不是不能定义,只是这样原方法会覆盖,所以十分不建议,保留字符包括如下表格中所列的内容:
and | exec | not | assert | finally | or |
---|---|---|---|---|---|
break | for | pass | class | from | |
continue | global | raise | def | if | return |
del | import | try | elif | in | while |
else | is | with | except | lambda | yield |
3、 定义变量的特性
根据上面的一些描述,以及与其他编程语言进行对比,我们需要记住如下特性:
- 变量赋值用符号 = ,需要强调这个叫做“赋值”,而不是“等于”
- 变量赋值不需要定义数据类型
- 变量a的值可以被重新定义,定义后会被替换成新的值
a = 3
a = 'hello'
print(a)
输出结果如下:
Hello
- 变量a可以用其他变量(而不只是常量)定义
b = 24
a = b
print(a)
输出结果如下:
24
- 变量a的值可以用一个计算式子定义
a = 3 + 4 + 5
print(a)
b = 24
a = 3 + b
print(a)
输出结果如下:
12
27
- 变量a可以被自己定义
a = 20
a = a + 1
print(a)
输出结果如下:
21
- 多变量的同时赋值:将变量和赋予的值分别通过逗号分隔,通过一个等号便可一一对应地赋值
a1, a2, a3, a4 = 1, 2, 3, 4
print(a1, a2, a3, a4)
输出结果如下:
1 2 3 4
这时,a1、a2、a3、a4分别被赋值成为了1、2、3、4,即我们通过这样一个语句完成了四次赋值。但是请注意,它不支持如下的做法:
a1 = 1, a2 = 2, a3 = 3
通过这个特性,我们在python的运用中常常利用如下取巧的操作:
x, y = 2, 3
x, y = y, x
print(x, y)
输出结果如下:
3 2
这样就直接完成了x、y的交换,而不用写成一般语言中交换两个元素中常用的:
temp = x
x = y
y = temp
综合以上特性来看,这个等号=
的含义可以描述成:先计算右边的值,然后把右边的值赋给左边的变量。
三、 运算符和字符
运算符是接收变量并进行一些运算的符号,而这里描述的字符指的是例如圆括号()
、方括号[]
等用于构建代码语句的符号。常用运算符和字符的汇总如下:
运算符 | 描述 |
---|---|
算数运算符 +、-、*、/ 、//、**、% | 加、减、乘、除、整除、乘方、余数 |
比较运算符==、!=、>、>=、<、<= | 等于、不等于、大于、大于等于、小于、小于等于 |
逻辑运算符 and、or、not、xor | 与、或、非、异或 |
位运算符&、|、~ 、^ | 与、或、非、异或 |
赋值运算符= | 用于变量赋值 |
字符 | 描述 |
---|---|
圆括号() | 运算、函数的定义与调用、定义元组(tuple) |
方括号[] | 定义列表和访问各种数据结构的元素 |
花括号{} | 定义字典 |
e | 科学计数法下的数据标记 |
单引号、双引号 '' 、"" | 标注字符串,使用时都只在本行起效果 |
三引号''' ''' | 标注字符串,允许跨行 |
井号 # | 标注注释行,该行之后的数据全部为注释,解释器不对其进行解释 |
转义字符 \ 、\t 、 \n | 换行、制表位、换行符 |
\\ | 斜杠 |
1、 算数运算符
常用的算术运算符包括:基本的加减乘除四则运算符 +
、-
、*
、/
,和整数除法、乘方、余数的运算符号 //
、**
、%
。使用示例如下所示:
print(1 + 2)
print(+ 2)
print(3 - 2)
print(- 2)
print(4 * 4)
print(6 / 2)
print(7 / 2)
print(7 // 2)
print(4 ** 2)
print(13 % 4)
输出结果如下:
3
2
1
-2
16
3.0
3.5
3
16
1
补充及注意:
- 两个整数执行乘法后结果的数据类型仍然是整数,但无论两个数是不是整除、以及原来的数字是不是整数,执行除法之后结果的数据类型都会变成浮点数
- 乘方是
**
,而不是^
,^
是"按位异或"的运算符
2、 比较运算符
比较运算包括等于、不等于、大于、大于等于、小于、小于等于等数个,对应的符号分别是==
、!=
、>
、>=
、<
、<=
。这些符号和我们在计算机上的一般符号表示相同。这里建立几个简单的例子用来展示效果:
a, b = 1, 2
print(a > b)
print(a < b)
print(a >= b)
print(a <= b)
print(a == b)
print(a != b)
输出结果如下:
False
True
False
True
False
True
3、 逻辑运算与位运算符
逻辑运算包括与、或、非和异或运算,对应的符号分别是&
、|
、~
、^
。逻辑型变量有两个值,True
和False
。逻辑运算其实也就是我们所谓的与或非运算中,我们可以用and
、 or
和not
连接各个表达式,and
和or
分别可以用 &
、 |
代替。但not
没有!
这种“非”含义的运算符,有一个近似的是位运算的按位取反的运算符。同时,还有一种重要的运算叫做异或(xor
, ^
),即二者真值不同时为True
。
具体使用示例如下:
a, b, c, d = True, True, False, False
a_bin, b_bin = 0b10100, 0b01101
print('and:', a and b, a & b)
print('and:', a and c, a & c)
print('or:', a or c, a | c)
print('or:', c or d, c | d)
print('not:', not a, ~a)
print('not:', not c, ~c)
print('xor:', a^b, a^c)
输出结果如下:
and: True True
and: False False
or: True True
or: False False
not: False -2
not: True -1
xor: False True
与此同时,与、或、非、异或都在位运算中发挥作用:
print(bin(a_bin & b_bin))
print(bin(a_bin | b_bin))
print(bin(~a_bin))
print(bin(a_bin ^ b_bin))
输出结果如下:
0b100
0b11101
-0b10101
0b11001
4、 赋值与运算符的结合
这里把运算符和字符组合起来,具体示例如下:
a = 4
a += 5 # a = a + 5
print(a)
b = 2
b **= 3 # b = b ** 3
print(b)
输出结果如下:
9
8
这里需注意,python中没有类似++
这种自加1的运算
5、 转义字符
反斜杠 \
, 表示转义字符,注意\t
、\n
、\\
分别是制表位、换行符和斜杠。同时,反斜杠\
在代码编写时表示代码的换行。具体示例如下:
a = '1999,\\2000'
b = '1999,\t2000'
c = '1999,\n2000'
print(a)
print(b)
print(c)
输出结果如下:
1999,\Tuesday
1999, Tuesday
1999,
Tuesday
对于掺杂了反斜杠\
的字符串,有一个屏蔽掉其转义功能、输出原始文本的办法,这就是在字符串前加一个r
。例如我们将刚刚的a、b、c的字符串前面分别加一个字母r
:
a = r'1999,\\2000'
b = r'1999,\t2000'
c = r'1999,\n2000'
print(a)
print(b)
print(c)
输出结果如下,反斜杠在输出是没有被作为转义字符:
1999,\\2000
1999,\t2000
1999,\n2000
与此同时,如果反斜杠出现在代码的最后,表示表示一行没写完,紧接着执行下一行(续行符号)。例如下面这个式子,实际上计算了1+2+3+4+5+6的和,这个功能在我们写很长的语句时很有用:
1 + 2 + 3 + 4 + \
5 + 6
输出结果如下:
21
如上,是对各种常用运算符和字符的讲解。
对于缺乏Python基础的同仁,可以通过免费专栏🔥《Python学习笔记(基础)》从零开始学习Python
结语
请始终相信“Done is better than perfect”
,不要过分追求完美,即刻行动就是最好的开始, 一个模块一个模块地积累和练习,必将有所收获。
还有其他的问题欢迎在评论区留言📝!
[版权申明] 非商业目的注明出处可自由转载,转载请标明出处!!!
博客:butterfly_701c