一, 格式化输出
现在有以下需求, 让? 户输入 name, age, job,hobby 然后输出如下所?:
- ----------info of dogfa----------
- name: dogfa
- age: 18
job: 嫖客
hobby: 嫖娼
---------------------------------
如果用字符串拼接的话会很繁琐, 所以我们可以采用这样的方法来实现:
- name = input("请输入姓名:")
- age = input("请输入年龄:")
- job = input("请输入工作:")
- hobby = input("请输入爱好:")
- info = '''----------info of dogfa----------
- name: %s
- age: %s
- job: %s
- hobby: %s
- ---------------------------------
- ''' % (name, age, job, hobby)
- print(info)
二, 基本运算符
计算机可以进? 的运算有很多种, 可不只加减乘除这么简单, 运算按种类可分为:
算术运算
逻辑运算
比较运算
赋值运算
位运算
成员运算
身份运算
在此我就着重介绍以上前四大基本运算
1, 算术运算
以下假设变量: a=10,b=20
运算符 | 描述 | 示例 |
---|---|---|
+ | 加 | a + b = 30 |
- | 减 | b - a = 10 |
* | 乘(若为字符串相乘则多个字符串拼接) | a * b = 200 |
/ | 除 | b / a = 2 |
% | 取模(相除取余数) | b % a = 0 |
** | 幂(返回 X 的幂次方) | a ** b = 10^20 |
// | 取整(相除取整数) | 7 // 3 = 2 |
2, 比较运算
以下假设变量: a=10,b=20
运算符 | 描述 | 示例 |
---|---|---|
== | 判断是否相等 | a == b (False) |
!= | 判断是否不等 | a != b (True) |
> | 判断是否大于 | a > b (False) |
< | 判断是否小于 | a < b (True) |
>= | 是否大于等于 | a >= b (False) |
<= | 是否小于等于 | a <= b (True) |
3, 赋值运算
运算符 | 描述 | 示例 |
---|---|---|
= | 简单的赋值运算符 | a == b (False) |
+= | 加法赋值运算符 | a += b (相当于 a = a + b) |
-= | 减法赋值运算符 | a -= b (相当于 a = a - b) |
*= | 乘法赋值运算符 | a = b (相当于 a = a b) |
/= | 除法赋值运算符 | a /= b (相当于 a = a / b) |
**= | 幂赋值运算符 | |
//= | 取整赋值运算符 | a //= b (相当于 a = a // b) |
4, 逻辑运算
假设 a = True ,b = False
运算符 | 描述 | 示例 |
---|---|---|
and | 与 | a and b (False) |
or | 或 | a or b (True) |
not | 非 | not(a and b)(True) |
逻辑运算的优先级:()>not>and>or, 从左往右依次计算.
扩展:
x or y , x 为真, 值就是 x,x 为假, 值是 y;
x and y, x 为真, 值是 y,x 为假, 值是 x
- 3>4 or 4<3 and 1==1 (False)
- 1 <2 and 3 < 4 or 1>2 (True)
- 2> 1 and 3 <4 or 4> 5 and 2 <1 (True)
- not 2> 1 and 3 <4 or 4> 5 and 2> 1 and 9> 8 or 7 < 6 (False)
- 1 and 2 (2)
- 1 or 2 (1)
- 1 and 0 (0)
- 1 or 0 (1)
5, 成员运算
in
not in
判断子元素是否在原字符串 (字典, 列表, 集合) 中:
- temp = "dogfa is a dsb!"
- print("dsb" in temp)
- print("dsb" not in temp)
三, 编码
python2 解释器在加载 .py ? 件中的代码时, 会对内容进? 编码(默认 ascill),?python3 对内容进? 编码的默认为 utf8.
早期. 计算机是美国发明的. 普及率不?, ? 般只是在美国使?. 所以. 最早的编码结构就是按照美国? 的习惯来编码
的. 对应数字 + 字?+ 特殊字符? 共也没多少. 所以就形成了最早的编码 ASCII 码. 直到今天 ASCII 依然深深的影响着我们.
ASCII(American Standard Code for Information Interchange, 美国标准信息交换代码)是基于拉丁字? 的? 套电
脑编码系统, 主要? 于显示现代英语和其他? 欧语?, 其最多只能? 8 位来表示(? 个字节), 即: 2**8 = 256, 所
以, ASCII 码最多只能表示 256 个符号.
例如:
字符 | 十进制 | 二进制 |
---|---|---|
a | 97 | 01100001 |
A | 65 | 01000001 |
space | 32 | 00100000 |
0 | 48 | 00110000 |
随着计算机的发展. 以及普及率的提?. 流? 到欧洲和亚洲. 这时 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?
开始设计是每个字符两个字节. 设计完了. 发现我? 中国汉字依然? 法进? 编码. 只能进? 扩充. 扩充成 32 位也就是 4 个字
节. 这回够了. 但是. 问题来了. 中国字 9 万多. ?unicode 可以表? 40 多亿. 根本? 不了. 太浪费了. 于是乎, 就提出了新的
UTF 编码. 可变? 度编码
UTF-8: 每个字符最少占 8 位. 每个字符占? 的字节数不定. 根据? 字内容进? 具体编码. 比如. 英?. 就? 个字节就够了. 汉
字占 3 个字节. 这时即满? 了中?. 也满? 了节约. 也是? 前使? 频率最? 的? 种编码.
ascii: 用 8 位, 一个字节表示字符
gbk: 用 16 位, 两个字节表示字符
unicode: 万国码, 用 32 位, 4 个字节表示字符
urf-8: 万国码的压缩版
英文: 8 位, 一个字节
汉字: 24 位, 3 个字节
欧洲文字: 16 位, 2 个字节
utf-16: 每个字符至少占 16 位, 即两个字节
单位转换:
- 8bit = 1byte
- 1024byte = 1KB
- 1024KB = 1MB
- 1024MB = 1GB
- 1024GB = 1TB
- 1024TB = 1PB
- 1024TB = 1EB
- 1024EB = 1ZB
通常用到 TB 就够了.
来源: http://www.bubuko.com/infodetail-3087005.html