4.基本运算符的使用以及编码的问题
基本运算符(赋值/比较/算术/逻辑)
基本操作符也称数值操作符,其中按种类来分有以下几种:
- 赋值运算符
- 比较运算符
- 算术运算符
- 逻辑运算符
- 身份运算符
- 成员运算符
- 位运算符
今天先介绍前四个运算符的使用方法。
1.算术运算符
现有变量 a
= 3,b
= 8。
符 | 实例 | 使用用法 |
---|---|---|
+ |
a + b = 11 |
加- 两个对象相加。 |
- |
a - b = -5 |
减- 负数或者两者相减。 |
* |
a * b = 24 |
乘- 两个数相乘或者返回一个重复若干次的字符串。 |
** |
a ** b =6561 |
幂- a的b次幂。 |
/ |
a / b =0.375 a除以b。 |
|
% |
a % b = 3 |
取模- 除法的余数。 |
// |
a // b = 0 |
取整- 商的整数部分。 |
实现代码如下,试一试!
#test.py
#----------------------------------------------------
# -*- coding: utf-8 -*-
a = 3
b = 8
# a,b = 3,8 多变量赋值
print(a + b)
print(a - b)
print(a*b)
print(a**b)
print(a/b)
print(a%b)
print(a//b)
Microsoft Windows [版本 10.0.17134.885]
(c) 2018 Microsoft Corporation。保留所有权利。
C:\Users\ASUS>python
Python 3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 23:09:28) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 3
>>> b = 8
>>> print(a + b)
11
>>> print(a - b)
-5
>>> print(a*b)
24
>>> print(a**b)
6561
>>> print(a/b)
0.375
>>> print(a%b)
3
>>> print(a//b)
0
>>>
2.比较运算符
现有变量 a
= 3,b
= 3。
运算符 | 实例 | 使用用法 |
---|---|---|
== |
a==b 返回True |
等于- 比较对象是否相等 |
!= |
a!=b 返回False |
不等于- 比较是否不相等 |
<> |
a<>b 返回False |
不等于- 比较同上!= (python3.0 已废弃) |
> |
a>b 返回False |
大于- a是否大于b |
< |
a<b 返回False |
小于- a是否小于b |
>= |
a>=b 返回True |
大于等于- a是否大于等于b |
<= |
a<=b 返回True |
小于等于- a是否小于等于b |
实现代码如下,试一试:
#test.py
#----------------------------------------------------
# -*- coding: utf-8 -*-
a = 3
b = 3
print(a == b)
print(a != b)
# print(a <> b) python3.0版本已废弃
print(a > b)
print(a < b)
print(a >= b)
print(a <= b)
Microsoft Windows [版本 10.0.17134.885]
(c) 2018 Microsoft Corporation。保留所有权利。
C:\Users\ASUS>python
Python 3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 23:09:28) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 3
>>> b = 3
>>> print(a == b)
True
>>> print(a != b)
False
>>> print(a > b)
False
>>> print(a < b)
False
>>> print(a >= b)
True
>>> print(a <= b)
True
>>>
3.赋值运算符
现有变量m
= 4, n
= 5。
运算符 | 实例 | 使用用法 |
---|---|---|
= | s= m+n |
简单赋值运算符 |
+= | s+= m等效于s=s+m |
加法赋值运算符 |
-= | s-= m等效于s=s-m |
减法赋值运算符 |
*= | s*= m等效于s=s*m |
乘法赋值运算符 |
/= | s/= m等效于s=s/m |
除法赋值运算符 |
%= | s%= m等效于s=s%m |
取模赋值运算符 |
**= | s**= m等效于s=s**m |
幂赋值运算符 |
//= | s//= m等效于s=s//m |
取整除赋值运算符 |
代码如下,试一下:
#test.py
#----------------------------------------------------
# -*- coding: utf-8 -*-
m = 4
n = 5
# 简单赋值
s = m + n
print(s)
# 加法赋值
s+=m
print(s)
# 减法赋值
s-=m
print(s)
# 乘法赋值
s*=m
print(s)
# 除法赋值
s/=m
print(s)
# 取模赋值
s%=m
print(s)
# 幂赋值
s**=m
print(s)
# 取整
s//=m
print(s)
Microsoft Windows [版本 10.0.17134.885]
(c) 2018 Microsoft Corporation。保留所有权利。
C:\Users\ASUS>python
Python 3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 23:09:28) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> # -*- coding: utf-8 -*-
...
>>> m = 4
>>> n = 5
>>> # 简单赋值
... s = m + n
>>> print(s)
9
>>> # 加法赋值
... s+=m
>>> print(s)
13
>>> # 减法赋值
... s-=m
>>> print(s)
9
>>> # 乘法赋值
... s*=m
>>> print(s)
36
>>> # 除法赋值
... s/=m
>>> print(s)
9.0
>>> # 取模赋值
... s%=m
>>> print(s)
1.0
>>> # 幂赋值
... s**=m
>>> print(s)
1.0
>>> # 取整
... s//=m
>>> print(s)
0.0
>>>
4.逻辑运算符
现有变量 x
= 1, y
= 0。
运算符 | 实例 | 使用用法 |
---|---|---|
and | x and y, 返回False
|
bool"与", 它返回y的计算值。 |
or | x or y,返回True
|
bool"或",有True 一定返回True 。 |
not |
not (x and y),返回True
|
bool"非",它返回的是相反的结果。 |
看一下代码,试一下:
#test.py
#----------------------------------------------------
# -*- coding: utf-8 -*-
x = 1
y = 0
#与
print(x and y)
#或
print(x or y)
#非
print(not (x and y))
要注意一点的是,他们之间的运算优先级问题。
优先级:or < and < not < (),括号优先级最高!!!
编码问题
Python2.x解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill);
而Python3.x对内容进行编码的默认为utf8,现在都已经Python3.8了。
ASCII(American Standard Code for Information Interchange)
早期. 计算机是美国发明的. 普及率不高, ⼀般只是在美国使用. 所以最早的编码结构就是按照美国⼈的习惯来编码的。
对应数字+字母+特殊字符⼀共也没多少,所以就形成了最早的编码ASCII码. 直到今天ASCII依然深深的影响着我们。
ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的⼀套电脑编码系统,主要⽤于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(⼀个字节),即:2**8 = 256,所以,ASCII码最多只能表示 256 个符号。
GBK(国标码)
随着计算机的发展. 以及普及率的提高. 流行到欧洲和亚洲. 这时ASCII码就不合适了. 比如: 中文汉字有几万个, 而ASCII最多也就256个位置. 所以ASCII不行了。
怎么办呢? 这时, 不同的国家就提出了不同的编码用来适用于各自的语言环境.比如, 中国的GBK, GB2312, BIG5, ISO-8859-1等等. 这时各个国家都可以使用计算机了.
GBK, 国标码占用2个字节. 对应ASCII码 GBK直接兼容. 因为计算机底层是用英文写的. 你不支持英⽂肯定不行. 而英文已经使用了ASCII码. 所以GBK要兼容ASCII.
这里GBK国标码. 前面的ASCII码部分. 由于使用两个字节. 所以对于ASCII码而言. 前9位都是0
字⺟A:0100 0001 # ASCII
字⺟A:0000 0000 0100 0001 # 国标码
Unicode(万国码)
国标码的弊端: 只能中国在使用, 日本就垮了. 所以国标码不满足我们的使用·. 这时提出了⼀个万国码Unicode.
unicode⼀开始设计是每个字符两个字节. 设计完了. 发现我大中国汉字依然无法进行编码. 只能进行扩充. 扩充成32位也就是4个字节. 这回终于够了。
UTF-8,UTF-16
但是, 问题来了?中国字9万多,而unicode可以表示40多亿.,根本用不了, 太浪费了!于是, 就提出了新的UTF编码-可变长度编码。
UTF-8: 每个字符最少占8位. 每个字符占用的字节数不定.根据⽂字内容进⾏具体编码. 比如,英文. 就一个字节就够了. 汉字占3个字节. 这时即满足了中文. 也满足了节约. 也是目前使用频率最高的⼀种编码。
UTF-16: 每个字符最少占16位.
GBK: 每个字符占2个字节, 16位
单位转换:
8bit = 1byte
1024byte = 1KB
1024KB = 1MB
1024MB = 1GB
1024GB = 1TB
1024TB = 1PB
1024TB = 1EB
1024EB = 1ZB
1024ZB = 1YB
1024YB = 1NB
1024NB = 1DB
常用到TB就够了!!!
先熟练一下本文章所写知识,其中还有一些补充后续会慢慢撰写提及。