运算、变量

2.1计算机会算术

1.数值运算

+
-
*
/
**
% 取余数 10%3 10除以3的余数

除了常见的数值运算,字符串也能进行加法乘法运算。

2.逻辑运算

在Python中,我们使用True和False两个关键字来表示真假。True和False 这样的数据被称为布尔值(Boolean)。

用“而且”连接起来的两个命题分别为真,那么整体命题就是真。这就是“与”运算,两个子命题必须都为真时,用“与”连接起来的复合命题才是真。在Python中,我们用and来表示“与”。


>>>True and True #结果为True

>>>False and True #结果为False

>>>False and False #结果为False

Python用or来进行“或”的逻辑运算。

>>>True or True # 结果为 True

>>>True or False # 结果为 True

>>>False or False # 结果为 False

最后,还有一种称为非的逻辑运算,其实就是对一个命题求反。Python 使用not表示。

>>>not True # 结果为 False

3.判断表达式 

>>>1 == 1	#结果为True
符号==表示了相等的关系。此外,还有其他的判断运算符:
>>>8.0 != 8.0	# !=,不等于
>>>4 < 5	# <, 小于
>>>3 <= 3	# <=, 小于或等于
>>>4 > 5	# >, 大于
>>>4 >= 0	# >=, 大于等于

综合运用:房产价格86万元,税 率15%,首付20%。假如我手里有40万元的现金。出于税务原因,我还希望自己付的税款低于13万元,那么是否还可以买这套房子?这个问题可以借用Python进行计算。

>>>860000*(0.15 + 0.2) <= 400000 and 860000*0.15 < 130000

答案是True,可以买房!

4.运算优先级 

如果一个表达式中出现多个运算符,就要考虑运算优先级的问题。 不同的运算符号优先级不同:

乘方:**
乘除:*	/
加减:+	-
判断:== > >= < <=
逻辑:! and or

()括号可以打破优先级

 2.2 计算机记性好

1.变量革命

新建变量时,计算机在空闲的内存中开辟存储空间,用来存储数据。和内存地址不同的是,根据变量的类型,分配的存储空间会有大小变化。程序员给变量起一个变量名,在程序中作为该变量空间的索引。数据交给变量,然后在需要的时候通 过变量的名字来提取数据。

把数值交给变量保存,这个过程称为赋值(Assignment)。Python中用等号=来表示赋值。从硬件的角度来看,给变量赋值的过程,就是把数据存入内存的过程。变量就像能装数据的小房间,变量名是门牌号。赋值操作是让某个客人前往该房间。

变量名直接参与运算,这是迈向抽象思维的第一步。

变量提供的符号化表达方式,是实现代码复用的第一步。

#之前的代码可以写成
total = 860000
requirement = total*(0.15 + 0.2)
print(requirement)	# 打印结果 301000.0
#每次在使用程序时,只需更改860000这个数值就可以了

 2.变量类型 

后赋予给变量的值替换了变量原来的值。Python能自由改变变量类型的特征被称为动态类型(Dynamic Typing)

静态类型(Static Typing)的语言中,变量有事先说明好的类型。特定类型的数据必须存入特定类型的变量。

静态类型语言中,新建变量必须说明类型,动态类型的语言看起来不需要说明类型,但其实是把区分类型的工作交给解释器。

Python解释器贴心的服务让编程更加方便,但也把计算机的一部分能力用于支持动态类型上。这也是Python 的速度不如C语言等静态类型语言的一个原因

Python的变量本身还是有类型的。我们可以用type()这一函数来查看变量的类型。 

>>>a = 100   	# 整型
>>>a = 100.0	# 浮点型
>>>a = 'abc'    # 字符串。也可以使用双引号“abc”标记字符串。
>>>a = True     # 布尔值

计算机需要用不同的方式来存储不同的类型。每种数据所需的存储空间也不同。计算机的存储空间以位(bit)为单位,每一位能存储一个0或1的数字。为了记录一个布尔值,我们只需让1代表真值,0代表假值就可以。所以布尔值的存储只需要1位。对于整数4来说,变换成 二进制位100。为了存储它,存储空间至少要有3位,分别记录1、0、0。

3.序列 

Python中一些类型的变量,能像一个容器一样,收纳多个数据。序列(Sequence)和词典(Dictionary)都是容器型变量。 

序列包含的一个数据被称为序列的一个元素(element),序列有两种,元组(Tuple)和列表(List)。两者的主要区别在于,一旦建立,元组(定值表)的各个元素不可再变更,而列表元素可以变更。

>>>example_tuple = (2, 1.3, "love", 5.6, 9, 12, False) # 一个元组
>>>example_list = [True, 5, "smile"]	# 一个列表
>>>type(example_tuple)	# 结果为’tuple'
>>>type(example list)	# 结果为'list'
#还可以在列表中嵌套另一个列表 或者 空列表 
>>>nest_list = [1,[3,4,5]]
>>>empty_list = []

序列元素的位置索引称为下标(Index)。Python中序列的下标0 开始。

>>>example_tuple[0]	#结果为2
>>>example_list[2]	#结果为’smile'
>>>nest_list[1][2]	#结果为5

表的数据可变更,因此可以对单个元素进行赋值。元组不能赋值。

对于序列来说,除了可以用下标来找到单个元素外,还可以通过范围引用的方式,来找到多个元素。范围引用的基本样式是:序列名[下限:上限:步长]

python True看值 python true+true_数据

 

4.词典 

词典不是以位置来作为索引的。词典允许用自定义的方式来建立数据的索引。词典的元素包含两部分,键(Key)和值(Value)。键是数据的索引,值是数据本身。键和值一一对应。

>>>example_dict = ("tom":ll,"sam":57,"lily":100}
>>>type(example dict)	# 结果为'diet'
>>>example_dict["tom"]	# 结果为 11
在词典中修改或增添一个元素的值:
>>>example_dict["tom"]	= 30
>>>example_dict["lilei"] = 99
»>example_dict # 结果为{”tom”: 30, "lily": 100, "lilei": 99, "sam": 57}
#构建一个新的空的词典:
>>>example_dict = {}
>>>example dict	# 结果为{}
#词典不具备序列那样的连续有序性,所以适于存储结构松散的一组数据。
#比如首付比例和税率可以存在同一个词典中:
rate = {"premium": 0.2, "tax": 0.15}

python True看值 python true+true_后端_02

明早再见友友们