python学习笔记表达式和运算符(一)

表达式和运算符

什么是表达式?

1+2*3 就是一个表达式,这里的加号和乘号叫做运算符,1、2、3叫做操作数。1+2*3 经过计算后得到的结果是7,就1+2*3 = 7。我们可以将计算结果保存在一个变量里,ret = 1-2*3 。 所以表达式就是由操作数和运算符组成的一句代码或语句,表达式可以求值,可以放在“=”的右边,用来给变量赋值。

算术运算符 : + - * / //(取整除) %(取余) **

>>> 2+3
>>> 3-2
>>> 2*3
>>> 5/2
2.5
>>> 5//2
>>> 5%2
>>> 2**3
赋值运算符: = 、+= -= *= /= %= //= **=
>>> num = 2    
>>> num += 1   # 等价于 num = num + 1
>>> num -= 1   # 等价于 num = num - 1
>>> num *= 1   # 等价于 num = num * 1
>>> num /= 1   # 等价于 num = num / 1
>>> num //= 1   # 等价于 num = num // 1
>>> num %= 1   # 等价于 num = num % 1
>>> num **= 2   # 等价于 num = num ** 2

比较运算符:>、 <、 >=、 <=、 ==、!=   True False简单讲一下
顾名思义,比较运算符是用来做比较的,比较的结果会有两种,分别是成立和不成立,成立的时候,结果是 True,不成立的时候结果是False。 True和False 用来表示比较后的结果。
>>> a = 5
>>> b = 3
>>> a > b  # 检查左操作数的值是否大于右操作数的值,如果是,则条件成立。 True
>>> a < b  # 检查左操作数的值是否小于右操作数的值,如果是,则条件成立。False
>>> a <= b  # 检查左操作数的值是否小于或等于右操作数的值,如果是,则条件成立。False
>>> a >= b  # 检查左操作数的值是否大于或等于右操作数的值,如果是,则条件成立。True
>>> a == b  # 检查,两个操作数的值是否相等,如果是则条件变为真。False
>>> a != b  # 检查两个操作数的值是否相等,如果值不相等,则条件变为真。True

逻辑运算符: not 、and、 or
逻辑运算符是用来做逻辑计算的。像我们上面用到的比较运算符,每一次比较其实就是一次条件判断,都会相应的得到一个为True或False的值。而逻辑运算符的的操作数就是一个用来做条件判断的表达式或者变量。
>>> a > b and  a < b  # 如果两个操作数都是True,那么结果为True,否则结果为False。False
>>> a > b or  a < b  # 如果有两个操作数至少有一个为True, 那么条件变为True,否则为False。True
>>> not a > b  # 反转操作的状态,操作数为True,则结果为False,反之则为TrueFalse
结果为True的时候,我们一般称 结果为 真, 逻辑运算符会有一个真值表。

成员运算符: not in 、in (判断某个单词里是不是有某个字母)

成员运算符用来判断一个元素是否是另一个元素的成员。 比如说我们可以判断 “hello” 中是否有 “h”, 得到的结果也是True 或者 False。

>>> "h" in "hello"  # 这里的意思是 “h” 在“Hello” 中,判断后结果为TrueTrue 
>>> "h" not in "hello"  # 这里的意思是 “h” 不在“Hello” 中,判断后结果为FalseFalse

身份运算符: is、is not(讲数据类型时讲解,一般用来判断变量的数据类型)

用来判断身份。

>>> a = 123456
>>> b = a
>>> b is a   #判断  a 和 b 是不是同一个 123456True
>>> c = 123456
>>> c is a  #判断  c 和 a 是不是同一个 123456False
>>> c is not a   #判断  c 和 a 是不是不是同一个 123456True

这里我们首先将123456赋值给a,后有将a赋值给b, 这样其实是 a和b 的值都是123456, 但是后面c的值也是123456,为什么 第一次a is b 的结果为True ,c和 a 的结果为False 呢?

原因是这样的: 我们知道程序是运行在内存里的,第一次 我们将123456赋值给a的时候,其实是在内存里开辟了一块空间,将123456放在这块空间里,为了找到这里的123456, 会有一个指向这块空间的地址,这个地址叫做内存地址,是123456存储在内存中的地址。a其实指向的就是存储123456的内存空间的地址。执行了b=a,就是让b指向的地址和a一样。之后我们执行了 c = 123456 ,这里就会再开辟一块内存空间,并将指向该空间的内存地址赋值给c ,这样的话 ,a和b 指向的是同一个123456, c 指向的是另外一个123456 。

位运算符:

先了解一个概念:

我们平时用到的数字在计算机中是以二进制表示的,  这个二进制数叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1.

比如:十进制中的数 +7 ,计算机字长为8位,转换成二进制就是00000111。如果是 -7 ,就是 10000111 。那么,这里的 00000111 和 10000111 就是机器数。

  原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 比如如果是8位二进制:

  [+1] = 0000 0001

  [-1] = 1000 0001

  第一位是符号位. 因为第一位是符号位, 所以8位二进制数的取值范围就是:
  11111111 到 01111111  即  -127 到 127

  反码的表示方法是:
  正数的反码是其本身
  负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.

  [+1] = [00000001] = [00000001]

  [-1] = [10000001] = [11111110]

  补码的表示方法是:
  正数的补码就是其本身
  负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)

  [+1] = [00000001] = [00000001] = [00000001]

  [-1] = [10000001] = [11111110] = [11111111]

我们设置a=234 (二进制为 11101010), b=44 (二进制为 101100)

& 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0

| 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。

^ 按位异或运算符:当两对应的二进位相异时,结果为1

~ 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1

   a = 10000000 = 128

    ~a

     result: 01111111  = 127

<< 左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。

    a = 10110011 = 179

    a << 2

result:  1011001100

>> 右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数

    a = 10110011 = 179

    a >> 2

result:  00101100  = 44

位运算符一般用于二进制操作,一般用于底层,我们很少用,知道就可以了。

优先级

运算符那么多,优先级记不住怎么办? 使用小括号。通过使用小括号,我们就可以很方便的进行优先级的区分。

时间: 2024-12-25 13:58:07

python学习笔记表达式和运算符(一)的相关文章

JS学习第六天----表达式和运算符

表达式和运算符 1.如果不清楚运算符的优先级,最简单的办法就是使用括号来明确表明计算顺,赋值操作的优先级很低,几乎自后才被执行 2.如果"+"运算符表达式中一个是字符串,而另一个不是,则另一个会被自动转换为字符串. 如果加号运算符中一个运算数为对象,则这个对象会被转换为可以进行加法运算的数字或可以进行连接运算的字符处澳门,这一转换是通过调用该对象的valueof()或toString()方法来实现的. 3.如果"-"运算符的运算数字不是数字,那么系统会自动把它们转换

JavaScript学习笔记【2】表达式和运算符、语句、对象

笔记来自<JavaScript权威指南(第六版)> 包含的内容: 表达式和运算符 语句 对象 表达式和运算符 数组直接量中的列表逗号之间的元素可以省略,这时省略的空位会填充值undefined.元素列表末尾可以留下单个逗号,这时并不会创建一个新的值为undefined元素. 属性访问表达式,.identifier的写法只适用于要访问的属性名称是合法的标识符,并且需要知道要访问的属性的名字.如果属性名称是一个保留字或者包含空格和标识符,或是一个数字(对于数组来说),则必须使用方括号的写法.当属性

python &nbsp; 学习笔记 (核心)

python    学习笔记 (核心) Python解释器从头到尾一行接一行执行脚本 # -*- coding: UTF-8 -*-    //字符编码 不区分单引号和双引号,x='hello',x[0],x[-1]指最后一个字符,x[2:4]取子串, '''hello''' #hello三引号会保留文本输入时的换行符制表符等不需要转义,用于多行原样输入保存 'hello'+'world' #字符串拼接,'hello'*2 #字符串重复 help(fun) #帮助,help(module.met

python学习笔记2—python文件类型、变量、数值、字符串、元组、列表、字典

python学习笔记2--python文件类型.变量.数值.字符串.元组.列表.字典 一.Python文件类型 1.源代码 python源代码文件以.py为扩展名,由pyton程序解释,不需要编译 [[email protected] day01]# vim 1.py #!/usr/bin/python        print 'hello world!' [[email protected] day01]# python 1.py hello world! 2.字节代码 Python源码文件

Python学习笔记--未经排版

Python 学习笔记 Python中如何做到Print() 不换行 答:Print("输出内容",end='不换行的分隔内容'),其中end=后面为2个单引号 注:在Python 2.x中,Print "输出内容", 即在输出内容后加一逗号 Python中 is 和 == 的区别 答:Python中的对象包含三要素:id.type.value 其中id用来唯一标识一个对象,type标识对象的类型,value是对象的值 is判断的是a对象是否就是b对象,是通过id来

python学习笔记七:条件&循环语句

1.print/import更多信息 print打印多个表达式,使用逗号隔开 >>> print 'Age:',42 Age: 42   #注意个结果之间有一个空格符 import:从模块导入函数 import 模块 from 模块 import 函数 from 模块 import * 如果两个模块都有open函数的时候, 1)使用下面方法使用: module1.open()... module2.open()... 2)语句末尾增加as子句 >>> import ma

Python 学习笔记 5

5.1变量和表达式 例子5.1复利计算机(Simple Compound -Interest Calculation) 按照数字(int)类型输出: <span style="font-size:18px;">import string principal=1000 #Initial amount rate =0.05 #Interest rate numyears=5 #Number of years year =1 while year <= numyears:

python学习笔记7-函数的多类型传值和冗余参数

python学习笔记7-函数的多类型传值和冗余参数 函数多类型传值 例一,元组传参 In [2]: def fun(x,y):    ...:     return x+y In [4]: print fun(3,5) 8 In [5]: t=(1,2) In [6]: print fun(*t)  注意,这里使用的是*t调用元组t 3 In [7]: print fun(t)   用t,不加*,报错只给了一个参数,需要给2哥参数 --------------------------------

Python学习笔记基础篇——总览

Python初识与简介[开篇] Python学习笔记——基础篇[第一周]——变量与赋值.用户交互.条件判断.循环控制.数据类型.文本操作 Python学习笔记——基础篇[第二周]——解释器.字符串.列表.字典.主文件判断.对象 Python学习笔记——基础篇1[第三周]——set集合 Python学习笔记——基础篇2[第三周]——计数器.有序字典.元组.单(双)向队列.深浅拷贝.函数.装饰器 Python学习笔记——基础篇[第四周]——迭代器&生成器.装饰器.递归.算法.正则表达式 Python