Task:01 变量、运算符、数据类型及位运算
第一部分:基本概念
1、变量:
类似数学中定义的自变量,可同时定义变量的数据类型
注意:
1.变量名不能与Python库里的模块或者方法名相同,
2. 变量名可以包括字母、数字、下划线、但变量名不能以数字开头。
3.变量名最好有实际意义,方便代码的可读性,比如:用于存储用户名的字典变量,可以写成username;年龄:age等方便理解的自然语言;
3. Python 变量名是大小写敏感的,foo != Foo。
2、算术与比较运算符:
1.算术运算符:加减乘除、幂等熟悉即可;
2.逻辑运算符:and, or, not,
注意 = 是赋值符,与 == 等号的不同;
3.比较运算符:>=,<=,!= ,==;
3、位运算符:
这个是大家比较不熟悉的运算符,位运算符是针对二进制数据进行处理的运算。
-
操作符 名称 示例
-
~按位取反 ~4
-
& 按位与 4 & 5
说明:4的二进制为 100
5的二进制为 101
按位与 预算后为 100,输出结果为4;
| 按位或 4 | 5
^ 按位异或 4 ^ 5
“<< ” 左移 4 << 2 将对应数字4转为二进制表达100,左移两位位
10000
“>>“ 右移 4 >> 2
4、注意事项:
比较运算符:<,>,<=,>=,==,!=,is is not, in ,not in
is, is not 对比的是两个变量的内存地址
==, != 对比的是两个变量的值
比较的两个变量,指向的都是地址不可变的类型(str等),那么is,is not 和 ==,!= 是完全等价的。
对比的两个变量,指向的是地址可变的类型(list,dict,tuple等),则两者是有区别的。
第二部分 Python 代码实践
1、通过一个小编程熟悉变量
这是一个简单的猜数字游戏;
import random
def guess_num():
num=random.randint(1,100)
#print('您总共有10次猜数字的机会。\n')
while True:
guess_num=int(input("请输入0到100的整数: \n"))
if guess_num==num:
print("您猜对了,这个数字是:"+ str(num))
break
elif guess_num<num:
print("您输入的数字小了,请重新输入")
else:
print("您输入的数字大了,请重新输入:")
guess_num()
2、运算符应用练习
#数字运算符+,-,*,/ 整除//, 取余数%;幂**
a=100
b=29
print('a+b='+str(a+b))
print('a-b='+str(a-b))
print('a*b='+str(a*b))
print('a/b='+str(a/b))
print('a%b='+str(a%b))
print('a**3='+str(a**3))
print('a//b='+str(a//b))
输出结果:
a+b=129
a-b=71
a*b=2900
a/b=3.4482758620689653
a%b=13
a**3=1000000
a//b=3
3、逻辑/比较运算符练习
#常见运算符练习: and/or/ is/in/ not in/</<等
print("a<50 and b>19 is true or not: "+str(a<50 and b>19))
print("a<50 or b>19 is true or not: "+str(a<50 or b>19))
print("not b is true or not:"+str(not b))
print("a>b is true or not:"+str(a>b))
print("a>=b is true or not:"+str(a>=b))
print("a==b is true or not:"+str(a==b))
print("a!=b is true or not:"+str(a!=b))
print("a<b is true or not:"+str(a<b))
print("a<=b is true or not:"+str(a<=b))
输出结果:
a<50 and b>19 is true or not: False
a<50 or b>19 is true or not: True
not b is true or not:False
a>b is true or not:True
a>=b is true or not:True
a==b is true or not:False
a!=b is true or not:True
a<b is true or not:False
a<=b is true or not:False
4、重难点 位运算符:
-
对于许多Python 新手来说,对二进制不是特别熟悉。所以在了解位运算符时需要,需要先复习熟悉一下二进制表达方法,以及通过编程了解各位运算符的意义。
-
按位取反 ~4
& 按位与 4 & 5
| 按位或 4 | 5
^ 按位异或 4 ^ 5
<< 左移 4 << 2
‘’ >> 右移 4 >> 2
在正式学习位运算之前,我们先进行二进制基础复习
二进制转化及基本知识复习
#方法bin(数字),将常见的10进制数字转化为二进制表示,100,表示4,1000表示8
#二进制第n位上的1,对应10进制的数值为2^(n-1)
print(bin(4)) #用二进制表示4,可表示为0b100
print(bin(5))#用二进制表示5,可表示为0b101=2^2+2^0
print(bin(6))#用二进制表示6,可表示为0b110=2^2+2^1
print(bin(8))#用二进制表示8,可表示为0b1000=2^3
print(0b100+0b101) #默认情况下输出的是10进制的数值9
print(bin(0b100+0b101)) #要想将输出的数据用二进制表示,请记得用bin()转化为二进制
print("________________")
其他运算符,例如下面几个运算符用于判断真假
操作符 名称 示例
in 存在 ‘A’ in [‘A’, ‘B’, ‘C’]
not in 不存在 ‘h’ not in [‘A’, ‘B’, ‘C’]
is 是 “hello” is “hello”
is not 不是 “hello” is not “hello”
print("A" in ['A','B',"C"]) # 输出True,注意字符有大小写之分
print("a" in ['A','B',"C"]) # 输出False,注意字符有大小写之分
print("____________________")
#~ 按位取反 例如 ~4, 则输出的是-5, 即对4取反;
print("对数字4进行按位取反操作:\n")
print(bin(~4),~4)
print(bin(~5),~5)
print(bin(~6),~6)
print(bin(~7),~7)
print(bin(~8),~8)
对应按位取反结果如下:我们能够发现,符号取反,数值加1
-0b101 -5
-0b110 -6
-0b111 -7
-0b1000 -8
-0b1001 -9
print(32&7)# & 按位与,即将各数字转化为二进制数值,返回对应位上数字相同的,若无相同返回0
print(6&5) #4
print(6&7) #6
print('_______我是低调的分割线_______')
print("--按位与&,按位或|,按位异或^,练习:")
print(bin(4 & 5), 4 & 5) # 0b100 4
print(bin(4 | 5), 4 | 5) # 0b101 5
print(bin(4 ^ 5), 4 ^ 5) # 0b1 1
print('_______我是低调的分割线_______')
#按位左移,右移的操作,先将对应数字转化为二进制,然后整体左移或者右移
#例如:
print(bin(4 << 2), 4 << 2) # 0b10000 16
print(bin(4 >> 2), 4 >> 2) # 0b1 1
print(bin(6 << 2), 6 << 2) # 6 对应二进制为110, 左移两位为11000(即在右边补两个0)
print('__________________')
变量指向可变与不可变数据类型的区别
#注意赋值它本身的作用,是将变量指向某一类型数据,
#比较的两个变量均指向不可变类型。
a = "hello"
b = "hello"
c=b #将b指向的数据赋值给c, 并未将其指向也给c,故修改c的值不会改变b的值;
c='hello python'
print('b= '+b)
print(a is b, a == b) # True True ,因为a,b 都指向不可变类型(字符串)
print(a is not b, a != b) # False False
print(b is c, b == c) # False False
print(b is not c, b != c)
print("____________________")
#比较的两个变量均指向可变类型。
e = ["hello"]
f = ["hello"]
print(e is f, e == f) # False True
print(e is not f, e != f) # True False
print("____________________")
‘’’
运算符的优先级
什么是一元运算符、二元运算符、三元运算符???这个基本概念很重要
1.一元运算符优于二元运算符。例如3 ** -2等价于3 ** (-2)。(乘除、幂,优于加减)
2.先算术运算,后移位运算,最后位运算。例如 1 << 3 + 2 & 7等价于 (1 << (3 + 2)) & 7。
3.逻辑运算最后结合。例如3 < 4 and 4 < 5等价于(3 < 4) and (4 < 5)。
‘’’
print(-3 ** 2) # -9
print(3 ** -2) # 0.1111111111111111
print(1 << 3 + 2 & 7) # 0
print(-3 * 2 + 5 / -2 - 4) # -12.5
print(3 < 4 and 4 < 5) # True
print(1<<5)
#三元运算符
print("三元运算符及其表达方式:")
def small(x,y):
if x < y:
small = x
else:
small = y
print(small)
small(10,20)
x,y=4,5 #给x,y 赋值
small=x if x<y else y #对if ...else 的三元操作改写
print(small)