python input函数 & 运算符

/ 2021-06-04 / 54人浏览 / 0人评论

python

input函数

简介

input函数接受一个标准输入数据,返回为 string 类型,和print 输出函数是相反的。通俗的来说,就是input函数就是接收用户输入的数据,然后这些数据返回的结果都是字符串类型。

注意:input函数返回数据类型为string(字符串)类型

demo

# input 函数

aaa = input("你可以随意输入")

print(aaa, type(aaa))

# 录入数据进行计算

a = input("请输入一个数字")
b = input("请再输入一个数字,将进行加法运算")
print('计算结果为:',int(a)+int(b))

# input 函数直接进行处理
a1 = int(input("请输入一个数字"))
b1 = int(input("请再输入一个数字,将进行加法运算"))
print('计算结果为:',a1+b1 )

输出如下:

你可以随意输入1123sssas
aaa值和类型 1123sssas <class 'str'>
请输入一个数字1
请再输入一个数字,将进行加法运算2
a+b计算结果为: 3
请输入一个数字4
请再输入一个数字,将进行加法运算3
a1+b1计算结果为: 7

运算符

python中常见运算符是算术、赋值、比较、逻辑、位运算符。下面详细说说各种运算符。

算术运算符

算术运算法有标准运算符、取模运算符、幂运算符。

  • 标准运算符: 加(+) 减(-) 乘(*) 除(/) 整除(//)
  • 取模运算符:取模 (%),相当是取余的运算符
  • 幂运算符:幂 ( ** ) 返回x的y次幂
# 算术运算符
a = 11
b = 23
# 标准运算法
print('a+b =', a+b)
print('a-b =', a-b)
print('a*b =', a*b)
print('b/a =', b/a)
print('b//a =', b//a)   # 整除,只取整数部分
# 取模运算符
print('b%a =', b%a)
# 幂运算符
print('2**10 =', 2**10) # 2的10次方
# 整除特别版
print('9//4 =', 9//4)
print('-9//-4 =', -9//-4)
# 一正一负的整除,向下取接近商的整数  -9/4 = -2.25 向下取整应该是-3,不是 -2
print('9//-4 =', 9//-4)
print('-9//4 =', -9//4) 

输出如下:

a+b = 34
a-b = -12
a*b = 253
b/a = 2.090909090909091
b//a = 2
b%a = 1
2**10 = 1024
9//4 = 2
-9//-4 = 2
9//-4 = -3
-9//4 = -3

赋值运算符

赋值运算符,一般用 = 来赋值 ,其中特殊的如a+=b相当于a = a + b的操作。还有一些链式赋值 a=b=c=1,赋值一切对象其实。

# 赋值运算符
i = 3+4
# 链式赋值
a=b=c=2
# 链式赋值的结果说明,a=b=c 指向内存的地址是一样的,等于说是只有一个整数对象,分别有a,b,c 三个引用这个对象
print('a,b,c的id',id(a),id(b),id(c))
a+=b
print('a = ',a)
# 经过计算 a 的内存地址变化了。
print('a,b,c的id',id(a),id(b),id(c))

# 参数赋值
a=20
a+=20
print('a的值',a)
a-=10
print('a的值',a)
a*=10
print('a的值',a)
a/=20
print('a的值',a) # a 这里变成float类型,后面都会是float类型
a//=4
print('a的值',a)
a%=9
print('a的值',a)

# 系列解包赋值
a,b,c = 20,30,40 # 两边个数需一致,不然会报错
print('a,b,c的值',a,b,c)
print('a,b,c的id',id(a),id(b),id(c))
# 交换数值
a,b = b,a
print('a,b,c的值',a,b,c)
print('a,b,c的id',id(a),id(b),id(c))

输出如下:

a,b,c的id 1379788736 1379788736 1379788736
a =  4
a,b,c的id 1379788768 1379788736 1379788736
a的值 40
a的值 30
a的值 300
a的值 15.0
a的值 3.0
a的值 3.0
a,b,c的值 20 30 40
a,b,c的id 1379789024 1379789184 1379789344
a,b,c的值 30 20 40
a,b,c的id 1379789184 1379789024 1379789344

比较(关系)运算符

比较运算符是代码开发过程中常用的东西,一些条件判断就需要借助比较运算符。通常是用对变量、表达式进行大小、真假等比较。最终比较运算符返回的结果是布尔类型的,要么真要么假。

# 比较运算符
a,b,c= 10,20,30
print('c比a+b大吗?',c>a+b) # c = a+b 所以返回的是False
print('c等于a+b吗?',c==a+b) # True 特别说下, = 是赋值,所以是否等于使用的是两个 = , ==
print('c大于等于a+b吗?',c>=a+b)  # True 等于了,扩散下, >= 这个跟 赋值运算符区别是什么?

# 扩展说明
# 前面说一个变量有三部分组成 标识、类型、值;那么 == 比较的是什么?值还是标识?
a = '10'
b = '100'
a += '0'
print('a ,b 的标识',id(a),id(b))
print('a ,b 的值',a,b)
print('a ,b 是否相等',a==b) # 使用字符串类型来看,值相同,但是标识不同,所以 == 比较的是值
# 那么怎么比较标识是否一致呢?如果标识一致,那么值肯定是相等的。 使用 is 我们测试下
print('a ,b 标识是否相等',a is b) # 上面能看出 标识不一样,但是值是一致的,所有 is 判断值是否一致应该是对的
a = b = 10
print('a ,b 的标识',id(a),id(b))
print('a ,b 标识是否相等',a is b) # 证明 is 就是判断 变量 标识 是否相等的
print('a ,b 标识是否不相等',a is not  b) # 判断变量标识是否不相等 是 is not

输出结果:

c比a+b大吗? False
c等于a+b吗? True
c大于等于a+b吗? True
a ,b 的标识 47984416 48501920
a ,b 的值 100 100
a ,b 是否相等 True
a ,b 标识是否相等 False
a ,b 的标识 268822592 268822592
a ,b 标识是否相等 True
a ,b 标识是否不相等 False

逻辑运算符

逻辑运算符也叫布尔运算符,主要就是 and(与)、or(或)、not(非) 这三种。

# 逻辑运算符
a,b,c,d = 1,2,3,4
# and 与
print('c>b 且 b>a', c>b and b>a ) # True  and 表示 and 前后 布尔值都为True ,才会整体笔试True ,前后只要有一不为True 则 整体为False
print('c<b 且 b>a', c<b and b>a ) # False
# or 或
print('c<b 或 b<a', c<b or b<a ) # False or表示 or 前后布尔值至少有一个为True,整体就是True,前后布尔值都是False,整体就是False
print('c<b 或 b>a', c<b or b>a ) # True
# not 非
print('c<b 或 b<a 结果反过来',not c<b or b<a ) # True not 表示反义,如果左边布尔值是True, 则not 整体表示False
print('不是True',not True )  # False

输出结果:

c>b 且 b>a True
c<b 且 b>a False
c<b 或 b<a False
c<b 或 b>a True
c<b 或 b<a 结果反过来 True
不是True False

成员运算符

成员运算符主要就是 in 、 not in

# 成员运算符
a,b = '123456','23'
# in
print('a 包含 b ', b in a) #  True   in 表示 在指定的对象值中找到值返回 True,否则返回 False。
# not in
print('a 不包含 b ', b not in a) # False  not in 就是非 in

输出结果:

a 包含 b  True
a 不包含 b  False

位运算符

位运算符就是将值转换成二进制进行计算。主要是运算符为: &(按位与)、|(按位或)、<<(左移动)、>>(右移动)、~(按位反) 、^(按位异),详细解释下:

  • &(按位与):按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0
  • |(按位或):按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。
  • <<(左移动):左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。
  • “>>”(右移动):右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数,低位丢弃,高位补0。
  • ~(按位反):按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1。~x 类似于 -x-1
  • ^(按位异):按位异或运算符:当两对应的二进位相异时,结果为1
# 位运算符

# 00000100  &
# 00001000  参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0
# 00000000
print('4 按位与 8 --》', 4 & 8) # 所以 4 按位与 8 是 0 没错

# 00000100  |
# 00001000  只要对应的二个二进位有一个为1时,结果位就为1。
# 00001100
print('4 按位或 8 --》', 4 | 8)


# 00000100  <<  3
# 运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。
# 00100000
print('4 左移 3 --》', 4 << 3)

# 00000100  >>  3
# 把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数,低位丢弃,高位补0。
# 00000000
print('4 右移 3 --》', 4 >> 3)

# 00000100  ~
# 对数据的每个二进制位取反,即把1变为0,把0变为1。~x 类似于 -x-1
# 11111011
print('4 取反 --》', ~4 )

# 00000100  ^
# 00001000 当两对应的二进位相异时,结果为1
# 00001100
print('4 位相异 8  --》', 4^8 )

输出结果:

4 按位与 8 --》 0
4 按位或 8 --》 12
4 左移 3 --》 32
4 右移 3 --》 0
4 取反 --》 -5
4 位相异 8  --》 12

运算符优先级

一个表达式中,有多最终运算符,那么这个表达式的运算优先级是什么样子的呢?

总结下运算符优先级:

先算术运算符,再位运算符,接着是比较,最后是逻辑运算符;如果有括号,先进行括号中的运算。

详细结果看下图:

运算符优先级

全部评论