Python 3.7入门篇

4.基本运算符的使用以及编码的问题

2019-07-21  本文已影响33人  HassGy

基本运算符(赋值/比较/算术/逻辑)


基本操作符也称数值操作符,其中按种类来分有以下几种:

  • 赋值运算符
  • 比较运算符
  • 算术运算符
  • 逻辑运算符
  • 身份运算符
  • 成员运算符
  • 位运算符

今天先介绍前四个运算符的使用方法。

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就够了!!!

先熟练一下本文章所写知识,其中还有一些补充后续会慢慢撰写提及。

上一篇下一篇

猜你喜欢

热点阅读