python第二天
位运算符
计算机 0 1 5+11 先转换成二进制
半导体:从一边到一边是通电的,同另一边到这边是不同点 bit位 0 1
1字节=8 bit 0-255 256
10+11 基于二进制运算 byte
0000 1010
0000 1011
0001 0101 -->2的幂次方相加



复数运算是基于补码的运算
正数没有原码、反码、补码的概念
原码:十进制转换的二进制
反码:原码除符号位外其余位取反
补码:反码+1
-4
1000 0100 的反码 1111 1011----》加1----》1111 1100 -4的补码
然后和3做运算
1111 1100
0000 0011
1111 1111 #是个补码 ----》1111 1111 -1 ------》1000 0001

hex(12) #把十进制转16进制
0xc
bin(12) #把十进制转二进制
0b1100
(0b是python表示二进制的)
oct(16) #把进制转换成8进制
0o20
逢8进一、逢16进一
python中的位运算符(全部是都是基于二进制的运算)
&:按位与 两位都是1的时候结果才为1
10 & 11
0000 1010
0000 1011
0000 1010 10
验证
Print(10&11)
|: 按位或 有1就为1
12 | 15
0000 1100
0000 1111
0000 1111 15
^ 两位不同时,结果为1
12 15
1100
1111
0011
Print(12^15)
~ 按位取反 把每一个二进制位全部取反
~11
0000 1011 按位取反是 1111 0100---->先减1---->1111 0011 > 除符号位其余取反
----》 1000 1100 -12
<< 左移 #相当于16乘以2的三次方
0000 1011
0000 1011
00 101100 44
Print(11<<2)
右移 (符号位存在问题) #相当于 16除以2的三次方
Print(11>>2) 负数的右移,记得转换成补码,左边的空缺位,补1。对于正数,右移之后左边补0
身份运算符
is(判断两个标识符是否引用的是同一个对象) is not
Str1=”zhangsan 123@”
Str2=”zhangsan 123@”
Print(str1==str2)
True
Print(str1 is str2)
False

id(str1)
id(str2)
数字的id是一样的
字符如果是数字的id也是一样的




用原生的python解释器验证,不用pycharm验证
练习:

答案 :

什么是程序结构
描述了程序中代码的执行过程
顺序结构、选择结构(if )、循环结构
选择结构
if 条件: #条件:最终结果是bool值就可以(比较运算符、逻辑运算符、成员运算符in not in 、is)
条件成立时执行的代码(前面一定要有缩进)
用户输入年龄。我们判断是否未成年,出门左拐
Age = int(input(“请输入您的年龄:”))
if age<18:
缩进 print(123)
Print(“出门左拐”)
If下面的条件,必须缩进要是一致的,要是一个就是一个,要是两个缩进就是两个缩进。
print(123)
注意:python中是用缩进进去区分代码块的,一定要注意缩进。

双分支:
if 条件:
条件成立时执行的代码
else:
条件不成立时执行的代码
注意:if和else缩进要一样

练习1:用户输入一个数,判断是否是3的倍数。

练习2:

max(1,2,4) 判断三边的斜边


练习3:


或者


注意:一个tab键是四个空格,缩进量保持一致。

>60 <70 <80
Chengji = int(input(“成绩:”))
If chengji>=60:
Print(“及格了”)
If chengji<=70:
Print(“良好”)
Else:
Print(“优秀”)
Else:
Print(“不及格”)
练习:


多分支

练习:


三元运算符,简写的双分支


作业:

浙公网安备 33010602011771号