第三章: Python 基础 & 运算符
3.1 内容回顾 & 补充
计算机基础
编码
字符串: "中国" "Hello"
字 符: 中 e
字 节:
unicode: 中 -> 4 个字节, e -> 4 个字节
utf-8 : 中 -> 3 个字节, e -> 1 个字节
位 : 01101111 -> 8 位表示一个字节
unicode: 一般用于内存中的数据计算
utf-8 : 一般用于网络传输及数据保存
安装解释器
py2
py3
语法
print / input
整型 int / 字符串 str / 布尔值 boolen
条件语句
and 运算符
变量
练习
- # 练习题: 用户输入成绩, 根据成绩的不同显示不同的级别, 评分规则: A>=90; B>=80; C>=70; D 其他.
- score = input("请输入成绩:")
- score_int = int(score) # 如果不使用 int 强制转换, 执行会报错 TypeError: '>=' not supported between instances of 'str' and 'int'
- if score_int>= 90:
- print("A")
- elif score_int>= 80:
- print("B")
- elif score_int>= 70:
- print("C")
- else:
- print("D")
补充
- # 10086 示例
- message = """ 欢迎致电 10086
- 1, 话费查询
- 2, 流量服务
- 3, 业务办理
- 4, 人工服务
- """
- print(message)
- index = input("请输入你要选择的业务:")
- index = int(index)
- if index == 1:
- print('话费查询')
- elif index == 2:
- print('流量服务')
- elif index == 3:
- content = """ 业务办理
- 1, 修改密码
- 2, 更改套餐
- 3, 停机
- """
- print(content)
- value = input('请输入要办理的业务编号:')
- value = int(value)
- if value == 1:
- print('修改密码')
- elif value == 2:
- print('更改套餐')
- elif value == 3:
- print('停机')
- else:
- print('错误')
- elif index == 4:
- print('人工服务')
- else:
- print('输入错误')
pycharm 变更解释器
3.2 循环语句
1, 循环打印 "人生苦短, 我用 Python"
- while True: # 没有终止循环条件, 这叫死循环
- print('人生苦短, 我用 Python')
2,while 后加条件
- while 1> 0:
- print('人生苦短, 我用 Python')
- while 1> 0 and 2> 1:
- print('人生苦短, 我用 Python')
3, 数字相加
"""
count = 1
value = count + 1
print(value)
""""""
count = 1
count = count + 1
print(count)
"""
4, 请通过循环, 让 count 每次循环都 +1
- count = 1
- while True:
- print(count)
- count = count + 1
- count = 1
- while True:
- print(count)
- count = count + 2
- # 练习
- while True: # 这个代码执行的结果就是永远打印 1
- count = 1
- print(count)
- count = count + 1
5, 请通过循环, 打印 1 2 3 ...10
- count = 1
- while count <= 10:
- print(count)
- count = count + 1
- print("结束")
6, 请通过循环, 打印 1 2 3 4 5 6 8 9 10
- # 错误示例
- count = 1
- while count <= 10 and count != 7:
- print(count)
- count = count + 1
- # 正确
- count = 1
- while count <= 6:
- print(count)
- count = count + 1
- count = 8
- while count <= 10:
- print(count)
- count = count + 1
- # 正确
- count = 1
- while count <= 10:
- if count != 7:
- print(count)
- count = count + 1
- # 正确
- count = 1
- while count <= 10:
- if count == 7:
- pass
- else:
- print(count)
- count = count + 1
7, 关键字: break - 是终止当前循环
- while True:
- print(666)
- break # 终止当前循环
- print('结束')
- # 练习:
- # 通过 break 实现打印 1-10
- count = 1
- while True:
- print(count)
- if count == 10:
- break
- count = count + 1
- print("结束")
- # break 是终止当前循环
- while True:
- print('你好')
- while True:
- print(666)
- break
- break
8, 关键字: continue
- count = 1
- while count <= 10:
- print(count)
- continue # 本次循环如果遇到 continue, 则不再继续往下走, 而是回到 while 条件位置
- count = count + 1
- # 示例: 1 2 3 4 5 6 8 9 10
- count = 1
- while count <= 10:
- if count == 7:
- continue
- print(count) # 会打印 1 到 6, 但程序不会自动终止
- count = count + 1
- count = 1
- while count <= 10:
- if count == 7:
- count = count + 1
- continue
- print(count)
- count = count + 1
- 9,while else
- count = 1
- while count <10:
- print(count)
- count = count + 1
- else: #不再满足 while 后面的条件时, 触发. 或 条件 = False
- print("ELSE 代码块")
- print('结束')
- count = 1
- while True:
- print(count)
- if count == 10:
- break
- count = count + 1
- else: # 不再满足 while 后面的条件时, 触发. 或 条件 = False
- print("ELSE 代码块") # 这段代码中这行不会执行, 因为条件不会为 False 时, break 已经终止了当前循环
- print('结束')
10,while 循环代码执行顺序
11, 其他
快速注释 Ctrl+?
pycharm 断点 (Debug 模式)
Debug 模式运行代码, Debug 模式可以让你看见代码执行每一步都干了什么
12, 总结
while 基本结构
- break
- continue
- while else
3.3 字符串格式化
1,%s 占位符
- name = input('姓名:')
- do = input('在干什么:')
- template = "%s 在教室,%s." % (name,do,)
- print(template)
2,%d 占位符
- template = "我是 %s, 年龄 %s, 职业 %s" % ("alex",78,"讲鸡汤")
- print(template)
- template = "我是 %s, 年龄 %d, 职业 %s" % ("alex",78,"讲鸡汤")
- print(template)
- 3,%%
- name = 'alex'
- template = '%s 现在手机的电量是 100%%'%(name,) # 如果是 100% 会报错
- print(template)
4, 示例
- name = input('请输入姓名:')
- age = input('请输入年龄:')
- job = input('请输入职业:')
- hobby = input('请输入爱好:')
- msg = """
- ------------ info od Alex ------------
- Name : %s
- Age : %s
- Job : %s
- Hobby : %s
- ------------ end ------------"""
- #print(msg%(name,age,job,hobby))
- data = msg % (name,age,job,hobby)
- print(data)
3.4 运算符
3.4.1 算数运算
以下假设变量 a=2, b=3
运算符 | 描述 | 示例 |
---|---|---|
+ | 加——> 两个对象相加 | a+b=5 |
- | 减——> 两个数相减 | a-b=-1 |
* | 乘——> 两个数相乘或是返回一个被重复若干次的字符串 | a*b=6 |
/ | 除——>x 除以 y | b/a=1.5 |
% | 取模——> 返回除法的余数 | b%a=1 |
** | 幂——> 返回 x 的 y 次幂 | b**a=9 |
// | 取整除——> 返回商的整数部分 | b//a=1 , 如果是 3.0//2.0=1.0 |
加 +
- a = 10
- b = 20
- print(a + b) # 结果为 30
减 -
- a = 10
- b = 20
- print(a - b) # 结果为 -10
乘 *
- a = 10
- b = 20
- print(a * b) # 结果为 200
除 /
- a = 10
- b = 20
- print(a / b) # 结果为 0.2
取模 %
- value = 11 % 3
- print(value) # 结果为 2
幂 **
- a = 10
- b = 20
- print(a ** b) # 结果为 100000000000000000000
- val = 2**8
- print(val) # 结果为 256
取整除 //
- val = 9/2
- print(val) # 结果为 4.5
- c = 9
- d = 2
- print(c // d) # 结果为 4, 9.0//2.0 输出结果为 4.0
练习:
- # 练习题: 打印 1 - 100 之间的奇数
- count = 1
- while count <= 100:
- val = count % 2
- if val == 1:
- print(count)
- count = count + 1
- # 练习题: 打印 1 - 100 之间所有的数相加
- total = 0
- count = 1
- while count <= 100:
- total = total + count
- count = count + 1
- print(total)
- # 练习题: 打印 1 - 2 + 3 -4 + 5...+ 99 - 100 的结果
- total = 0
- count = 1
- while count <= 100:
- if count % 2 == 1:
- total = total + count
- else:
- total = total - count
- count = count + 1
- print(total)
3.4.2 比较运算
以下假设变量 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 |
3.4.3 赋值运算
以下假设变量 a=10 , b=20
运算符 | 描述 | 示例 |
---|---|---|
= | 简单的赋值运算符 | c=a+b 将 a+b 的运算结果赋值为 c |
+= | 加法赋值运算符 | 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 |
//= | 取整除赋值运算符 | c//=a 等效于 c=c//a |
练习:
- count = 1
- while count <= 100:
- print(count)
- count += 1 # 等效于 count = count + 1
3.4.4 逻辑运算
运算符 | 描述 | 示例 |
---|---|---|
and | 布尔‘与’ 如果 a 为 False,a and b 返回 False,否则它返回 b 的计算值 | (a and b) 返回 False |
or | 布尔‘或’ 如果 a 为 True,它返回 True,否则它返回 b 的计算值 | (a or b) 返回 True |
not | 布尔‘非’ 如果 a 为 True,它返回 False,如果 a 为 False,它返回 True | not(a and b) 返回 True |
1, 一般情况下的使用:
- if 1> 0 and 1 <2:
- print(666)
- if 1> 0 and 1> 2:
- print(777)
- if 1> 0 or 1> 2:
- print(888)
- if not 1> 0 or 1> 2:
- print(999)
2, 二般情况下的使用:
小知识:
- - int
- - str
- - bool
- # 数字转字符串
- v1 = 666
- v2 = str(v1)
- print(v2) # "666"
- # 字符串转数字
- v1 = "666"
- v2 = int(v1)
- print(v2) # 666
- # 数字转布尔值
- v1 = 1
- v2 = bool(v1)
- print(v2) # True
- v1 = 0
- v2 = bool(v1)
- print(v2) # False
- # 字符串转布尔值
- v1 = "1"
- v2 = bool(v1)
- print(v2) # True
- v1 = "0"
- v2 = bool(v1)
- print(v2) # True
- v1 = " "
- v2 = bool(v1)
- print(v2) # True
- v1 = "" # 表示空字符串
- v2 = bool(v1)
- print(v2) # Flase
- # 布尔值转换其他
- v1 = True
- v2 = int(v1)
- print(v2) # 1
- v1 = False
- v2 = int(v1)
- print(v2) # 0
- v1 = True
- v2 = str(v1)
- print(v2) # True
- v1 = False
- v2 = str(v1)
- print(v2) # False
3, 转换需要记住的:
字符串转数字
数字转字符串
"" / 0 转换布尔值之后是 False
4, 经典面试题
- # 对于 or :
- value = 1 or 9
第一个值转换成布尔值如果是真, 则 value = 第一个值.
第一个值转换成布尔值如果是假, 则 value = 第二个值.
如果有多个 or 条件, 则从左到右依次进行上述流程.
示例:
- v1 = 0 or 1
- v2 = 8 or 10
- v3 = 0 or 9 or 8
- # 示例:
- value = 0 or 9
- print(value) # 结果为 9
- value = 0 or 0
- print(value) # 结果为 0
- value = 0 or ""print('--->',value,'<---') # 结果为 ---> <---
- value = 0 or 9 or 8
- print(value) # 结果为 9
- # 对于 and :
如果第一个值转换成布尔值是 True, 则 value = 第二个值.
如果第一个值转换成布尔值是 False, 则 value = 第一个值.
如果有多个 and 条件, 则从左到右依次进行上述流程.
- # 示例:
- v1 = 1 and 9
- print(v1) # 结果为 9
- v1 = 1 and 0
- print(v1) # 结果为 0
- v1 = 0 and 7
- print(v1) # 结果为 0
- v1 = 0 and ""
- print(v1) # 结果为 0
- v1 = 1 and 0 and 9
- print(v1) # 结果为 0
- #and 和 or 综合 : 先看 and 再看 or (前提是在没有括号的情况下)
- # 示例:
- v1 = 1 and 9 or 0 and 6
- print(v1) # 结果为 9
5, 逻辑运算的优先级:
在没有 () 的情况下 not 的优先级高于 and , and 的优先级高于 or , 即优先级关系为 ()>not>and>or, 同一优先级从左往右计算.
3.4.5 成员运算
运算符 | 描述 | 示例 |
---|---|---|
in | 如果在指定的序列中找到值返回 True,否则返回 False | x 在 y 的序列中,如果 x 在 y 的序列中返回 True |
not in | 如果在指定的序列中没有找到值返回 True,否则返回 False | x 不在 y 的序列中,如果 x 不在 y 的序列中返回 True |
- in
- value = "我是中国人"
- # 判断'中国'是否在 value 所代指的字符串中. 或者说 '中国'是否是 value 所代指的字符串的子序列.
- v1 = "中国" in value
- # 示例
- content = input('请输入内容:')
- if "退钱" in content:
- print('包含敏感字符!')
- # 示例
- while True:
- content = input('请输入内容:')
- if "退钱" in content:
- print('包含敏感字符')
- else:
- print(content)
- break
- not in
- value = "我是中国人"
- # 判断'北京'是否不在 value 所代指的字符串中. 或者说 '北京'是否不是 value 所代指的字符串的子序列.
- v1 = "北京" not in value
3.4.6 身份运算
运算符 | 描述 | 示例 |
---|---|---|
is | is 是判断两个标识符是不是引用自一个对象 | x is y,如果 id(x) 等于 id(y),is 返回结果 1 |
is not | is not 是判断两个标识符是不是引用自不同对象 | x is not y,如果 id(x) 不等于 id(y),is not 返回结果 1 |
- a = 20
- b = 20
- print(id(a)) # 打印对象 id 值
- print(id(b))
- if a is b:
- print('1 - a 和 b 有相同的标识')
- else:
- print('1 - a 和 b 没有相同的标识')
- if a is not b:
- print('2 - a 和 b 没有相同的标识')
- else:
- print('2 - a 和 b 有相同的标识')
- # 修改 b 的变量
- b = 30
- if a is b:
- print('3 - a 和 b 有相同的标识')
- else:
- print('3 - a 和 b 没有相同的标识')
- if a is not b:
- print('4 - a 和 b 没有相同的标识')
- else:
- print('4 - a 和 b 有相同的标识')
以上示例输出结果:
- 1543007904
- 1543007904
1 - a 和 b 有相同的标识
2 - a 和 b 有相同的标识
3 - a 和 b 没有相同的标识
4 - a 和 b 没有相同的标识
- #is 和 == 的区别 后面学到列表时会学习
- #is 用于判断两个变量引用对象是否为同一个 (同一块内存空间), == 用于判断引用变量的值是否相等.
- a = [1,2,3]
- b = a
- print(b is a) # True
- print(b == a) # True
- b = a[:]
- print(b is a) # False
- print(b == a) # True
3.4.7 位运算
运算符 | 描述 | 示例 |
---|---|---|
& | 按位与运算符 | (a & b) 输出结果 12,二进制解释: 0000 1100 |
| | 按位或运算符 | (a | b) 输出结果 61,二进制解释: 0011 1101 |
^ | 按位异或运算符 | (a ^ b) 输出结果 49,二进制解释: 0011 0001 |
~ | 按位取反运算符 | (~a) 输出结果 -61, 二进制解释: 1100 0011 , 在一个有符号二进制数的补码形式 |
<< | 左移动运算符 | a << 2 输出结果 240,二进制解释:1111 0000 |
>> | 右移动运算符 | a >> 2 输出结果 15,二进制解释: 0000 1111 |
- a = 60 # 60 = 0011 1100
- b = 13 # 13 = 0000 1101
- c = 0
- c = a & b; # 12 = 0000 1100
- print("1 - c 的值为: %s"% c)
- c = a | b; # 61 = 0011 1101
- print("2 - c 的值为: %s"% c)
- c = a ^ b; # 49 = 0011 0001
- print("3 - c 的值为: %s"% c)
- c = ~a; # -61 = 1100 0011
- print("4 - c 的值为: %s"% c)
- c = a <<2; # 240 = 1111 0000
- print("5 - c 的值为: %s"% c)
- c = a>> 2; # 15 = 0000 1111
- print("6 - c 的值为: %s"% c)
以上示例输出结果:
1 - c 的值为: 12
2 - c 的值为: 61
3 - c 的值为: 49
4 - c 的值为: -61
5 - c 的值为: 240
6 - c 的值为: 15
3.4.8 运算符优先级
运算符 | 描述 |
---|---|
** | 指数 (最高优先级) |
~ + - | 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@) |
* / % // | 乘,除,取模和取整除 |
+ - | 加法减法 |
>> << | 右移,左移运算符 |
& | 位'AND' |
^ | | 位运算符 |
<= < > >= | 比较运算符 |
<> == != | 等于运算符 |
= %= /= //= -= += *= **= | 赋值运算符 |
is is not | 身份运算符 |
in not in | 成员运算符 |
not and or | 逻辑运算符 |
3.5 编码补充
编码扩展
ascii
unicode
ecs2 - Unicode 通过 2 个字节来表示, 这样表示的内容不够多
ecs4 - Unicode 通过 4 个字节来表示, 现在基本上都是这种
utf-8 - 全球通用, 中文用 3 字节.
utf-16
在 Windows 系统使用记事本写完数据后, 点击文件 - 另存为, 弹框中点击编码后的选择按钮, 有个 Unicode 的选项, 这个指的就是 utf-16, 因为 Unicode 不能写在硬盘上.
gbk2312 , 中文用 2 字节.
由中华人民共和国政府制定的, 简体汉字编码规范, 大陆所有计算机中的简体中文, 都使用此种编码格式.
gbk , 中文用 2 字节.
gbk2312 的升级版, 又称 GBK 大字符集, 简而言之就是将所有亚洲文字的双字节字符, 包括简体中文, 繁体中文, 日语, 韩语等 .
单位转化
- 8bit = 1byte
- 1024byte = 1kb
- 1024kb = 1MB
- 1024MB = 1GB
- 1024GB = 1TB
- 1024TB = 1PB
- 1024PB = 1EB
- 1024EB = 1ZB
- 1024ZB = 1YB
- 1024YB = 1NB
- 1024NB = 1DB
常用到 TB 就够了
有不足之处欢迎各位评论指正!
来源: https://www.cnblogs.com/duncan1863/p/11421836.html