EX3: Numbers and Math
-
例子:
print("I will now count my chickens:") print("Hens",25 + 31 / 6) print("Roosters",100 - 25 * 3 % 4) print("Now I will count the eggs:") print(3 + 2 + 1 - 5 + 4 % 2 -1 / 4 + 6) print("Is it true that 3 + 2 < 5 - 7?") print(3 + 2 < 5 - 7) print("What is 3 + 2?", 3 + 2) print("What is 5 - 7?", 5 - 7) print("Oh, that's why it's False.") print("How about some more.") print("Is it greater?", 5 > -2) print("Is it greater or equal?", 5 >= -2) print("Is it less or equal?", 5 <= -2)
-
学习内容:+、-、/、*、%、<、>、<=、>=
-
加、减、除、乘、取余、小于、大于、小于等于、大于等于
-
%:取余,取值:X除与Y所得到的余数。(意义不是百分号)
比如:100 / 16 = 6 ······ 4 等价于 100 % 16 = 4
-
-
深入练习(Study Drills)
- 浮点数更精确(带小数的为浮点数)
-
改变代码(寻找可能情况及错误)
-
++i/--i
输入:
print("Is it greater?", 5 > --6 , --6) print("Is it greater?", 5 > -6, -6) print("Is it greater?", 5 > --2 , --2) print("Is it greater?", 5 > -2 , -2)
print
的最后一项是为了验证--i
和-i
输出的数值,可以去掉。结果:结果:
PS F:\python\hard way 练习> python ex3.py Is it greater? False 6 Is it greater? True -6 Is it greater? True 2 Is it greater? True -2
- 不会报错,但是
python
没有++
和--
。 - 从以上结果可以看出,
--6
和--2
在python
中是6
和2
。 - 有时候在 Python 中看到存在
++i
这种形式,这其实不是自增,只是简单的表示正负数的符号而已。正正得正,负负得正,所以++i
和--i
都是i
。 - python
自增自减的表达为:
a = a + 1或
a += 1
-
-
补充知识
-
python没有自增自减符号(
++
/--
)- 原因
- python中的数字类型是不可变数据。
数字类型数据在内存中是不会发生改变。当变量值发生改变时,会新申请一块内存赋值为新值,然后将变量指向新的内存地址。
>>> a = 1 >>> id(a) 140706707333968 >>> a = a + 1 >>> id(a) 140706707334000 >>> a += 1 >>> id(a) 140706707334032
当
a
赋予新值时,a
指向的内存地址也发生了改变。而在C语言中,a
指向的内存地址并不会发生改变,而是改变内存的内容。(后补c语言同款代码)+=
是改变变量,相当于重新生成一个变量,把操作后的结果赋予这个新生成的变量。
++
是改变了对象本身,而不是变量本身,即改变数据地址所指向的内存中的内容。- python的整数池
理论上,每次赋值都会创建一个新对象,python的整数池是为了节约内存而存在的,整数池的范围是[-5, 256]的整数。也就是说,在[-5, 256]范围内,值相同的变量都指向了同一内存地址。
- 在[-5,256]范围内的整数:
>>> a = -5 >>> id(a) 140706707333776 >>> b = -5 >>> id(b) 140706707333776 >>> >>> a = 256 >>> id(a) 140706707342128 >>> b = 256 >>> id(b) 140706707342128
从查看内存地址可以看出,范围内的值相同的变量会指向同一内存地址。
- 各种不符合范围的数值:
>>> a = -6 >>> id(a) 2937464506256 >>> b = -6 >>> id(b) 2937464506384 >>> >>> a = 257 >>> id(a) 2937466712464 >>> b = 257 >>> id(b) 2937466712432 >>> >>> a = 0.1 >>> id(a) 2937464402448 >>> b = 0.1 >>> id(b) 2937464402472
这些不满足整数池条件的就会指向不同的内存地址。
-
我的GitHub中有详细的代码下载:https://github.com/YukyCookie/learn-python-three-the-hard-way.git