人生苦短 我用Python
位运算符(了解)
位运算是把数字看作二进制数来进行计算的,所以需要先将要执行运算的数据转换为二进制,然后才能进行执行运算
- “位与”运算(&)
- 两个操作数据的二进制表示,只有对应数位都是1时,结果数位才是1,否则为0
1 | print(12&8) # 输出结果为“8” |
- “位或”运算(|)
- 两个操作数的二进制表示,只有对应数位都是0时,结果数位才是0,否则为1
1 | print(8|4) # 输出结果为“12” |
- “位异或”运算(^)
- 两个操作数据的二进制相同(同时为0或同时为1),结果为零,否则为1
1 | print(31^22) # 结果为“9” |
- “位取反”运算(~)
- 操作数据中对应的二进制数1修改为0,0修改为1
1 | print(~123) # 结果为“-124” |
- “左移位”运算(<<)
- 将一个二进制数向左移动指定的位数,左边(高位端)溢出的位被丢弃,右边(低位端)的空位用0补充
- 左移位运算相当于乘以2的N次幂
1 | print(2<<2) # 将2向左移动2位 得8 |
- “右移位”运算(>>)
- 将一个二进制数向右移动指定的位数,右边(低位端)溢出的位被丢弃左边(高位端)的空位端,如果最高位是O(正数)左侧空位填0,如果最高位是1(负数),左侧空位填1
- 右移位运算相当于除以2的N次幂
1 | print(8>>2) # 将8右移2位 得2 |
运算符的优先级
运算符 | 说明 |
---|---|
** | 幂 |
~、+、- | 取反、正号和负号 |
*、/、%、// | 算术运算符 |
| +、- | 算术运算符 |
<<、>> | 为运算符中左移和右移 |
& | 位运算符中的位与 |
^ | 位运算符中的异或 |
| | 位运算符中的位或 |
<、<=、>、>=、!=、== | 比较运算符 |
程序的描述方式
自然语言:
使用人类语言,直接描述程序,比如:IPO描述
流程图:
是最直观易懂的表达方式,主要适用于较短的算法
伪代码:
介于自然语言和编程语言之间的一种算法描述语言
程序的组织结构
顺序结构:
按照程序语句的自然顺序,从上到下,依次执行每条语句的程序
选择结构:
按照条件选择执行不同的代码段
循环结构:
在一定的条件下反复执行某段程序的流程结构
顺序结构
顺序结构是程序中最基础的语句,赋值语句、输入/输出语句、模块导入语句等都是顺序结构的语句
赋值类别 | 细化分类 | 示例 | 注意 |
---|---|---|---|
增强赋值运算 | 增强赋值运算 | i+=1 | 相当于i=i+1 |
序列分解赋值 | 元组分解赋值 | name,age=’Paneer’,20 | |
列表分解赋值 | [name,age]=[‘Paneer’,20] | ||
字符串分解赋值 | a,b,c,d=’room’ | r、o、o、m四个字符分别赋值给a、b、c、d | |
扩展序列解包 | *号匹配赋值 | a,*b=’room’ | r赋值a,剩下的o、o、m赋值给b |
常用的条件语句
if语句
语法结构:
if 表达式:
语句块
汉语关联词:
如果…就…
执行顺序:
如果表达式的值为True
,就执行语句块
如果表达式的值为False
,就跳过语句块,继续执行后面的语句
1 | num = 98 |
if语句若语句块只有一句代码,可以将语句块直接写在冒号后面
if…else…语句
语法结构为:
if 表达式:
语句块1
else:
语句块2
汉语关联词:
如果…否则…
执行顺序:
如果表达式值为True
,执行语句1,否则执行语句2
1 | number=eval(input('请输入您的六位彩票号码')) |
if…elif…else语句
语法结构:
if 表达式1:
语句块1
elif 表达式2:
语句块2
...
elif 表达式n:
语句块n
else:
语句块n+1
示例为:
1 | score=eval(input('请输入您的成绩:')) |
if语句的嵌套
形式1
if 表达式1: if 表达式2: 语句块1 else: 语句块2
形式2
if 表达式1: if 表达式2: 语句块1 else: 语句块2 else: if 表达式3: 语句块3 else: 语句块4