input()函数的使用
基本用法
示例:
input()进阶
两个数相加,从键盘输入的都是str类型,需要使用int()类型转换函数进行处理后,在相加,处理之前是1+2=12,处理之后是1+2=3。
a=int(input('请输入一个加数:'))
b=int(input('请输入另一个加数:'))
print(type(a),type(b))
print(a+b)
运算符
1.算数运算符
基本运算:
print(1+1)#加法运算
print(1-1)#减法运算
print(1*2)#乘法运算
print(1/2)#除法运算,结果0.5
print(11//2)#整除运算,结果5
print(11%2)#取余运算,结果为1
print(2**3)#幂运算,结果 为8
特殊运算:
整除和取余
代码示例,注释是答案
print(9//4)#2
print(-9//-4)#2
print(9//-4)#-3**
print(-9//4)#-3** 一正一负,向下取整
print(9%-4)#-3 余数=被除数-除数*(整除得)商 9-(-4)*(-3)=-3
print(-9%4)#3 -9-4*(-3)=3
2.赋值运算符
执行顺序
代码验证:
i=3+4#从右往左为7
print(i)
链式赋值示意图(只有一个实体):
代码:
a=b=c=20#链式赋值
print(a,id(a))
print(b,id(b))
print(c,id(c))
参数赋值
为什么:
在a*2时还是int型
到a/3就变为float型
代码:
print('------------------支持参数赋值---------------')
a=20
a+=20 #相当于a=a+2一下以此类推
print(a)
a-=10
print(a)
a*=2
print(a)
print(type(a))
a/=3
print(a)
print(type(a))
a//=2
print(a)
a%=3
print(a)
系列解包赋值
系列解包赋值使python在交换两个变量的值时,变得非常方便,不用像c/c++,java等引入第三个变量
代码:
print('-------------------支持系列解包赋值-------------------')
a,b,c=20,30,40
print(a,b,c)
print('---------交换两个变量得值----------')
a,b=b,a
print('交换:',a,b)
3.比较运算符
代码如下:
a,b=10,20
print('a>b吗?',a>b)#False
print('a<b吗?',a<b)#True
print('a<=b吗?',a<=b)#True
print('a>=b吗?',a>=b)#False
print('a=b吗?',a==b)#False
print('a!=b吗?',a!=b)#True
'''一个=是赋值运算符,两个==为比较运算符
一个变量由三部分组成标识 类型 值
==比较的是值还是标识呢? 比较的是值
比较对象的标识使用是 is
'''
a=10
b=10
print(a==b)#True a与b的value相等
print(a is b)#True a与b的标识相等
#没学过代码,先入为主,后面再详细讲
list1=[11,22,33,44]
list2=[11,22,33,44]
print(list1==list2)#value->True
print(list1 is list2)#id->False
print(id(list1))
print(id(list2))
print(a is not b)#False
print(list1 is not list2)#True
关于变量a,b的is用法是比较id所以为true。==是比较value所以为true。
4.布尔运算符
大半部分理解其英文含义配上代码,就可以轻松理解了
a,b=1,2
print('------------------------------------and并且-----------------------------------')
print(a==1 and b==2)#True True and True->True
print(a==1 and b<2)#False True and False->False
print(a!=1 and b==2)#False False and True->False
print(a!=1 and b!=2)#False False and False->False
print('-------------------------------------or 或者-----------------------------------')
print(a==1 or b==2)#True True and True->True
print(a==1 or b<2)#True True and False->True
print(a!=1 or b==2)#False False and True->True
print(a!=1 or b!=2)#False False and False->False
print('----------------------------not 对bool类型运算符取反-------------------------')
f=True
f2=False
print(not f)#False
print(not f2)#True
print('-----------------------------in与not in-------------------------------------')
s='helloworld'
print('w' in s)#True
print('k' in s)#False
print('w' not in s)#False
print('k' not in s)#True
5.位运算符
按位运算是将数字换成二进制,然后每个位对齐计算
0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 4 |
0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 8 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 4 |
0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 8 |
0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 12 |
高位溢出 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 低位补0 | 4 | |
0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 8 |
4>>1
高位补0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 低位溢出 | 4 | |
0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 2 |
代码如下:
print(4&8)#按位与,同为1时结果为1
print(4|8)#按位或,同为0时结果为12
print(4<<1)#左移1位,原来数*2结果为8
print(4>>1)#右移1位,原来数/2结果为2
6.运算符的优先级
0.有括号先算括号里的
1.先算算数运算符,再算位运算符,再算比较运算符,再算布尔运算符,最后赋值运算符
2.算数运算符,先算乘除(整除,取余),后算加减,遇到幂先算幂
3.先算位移动,再与,最后或
4.比较同一优先级
5.先 and再or
6.最后赋值运算符
今日总结
不积跬步无以至千里,不积小流无以成江海