代码改变世界

第五章 数字

2017-03-11 11:32  szn好色仙人  阅读(126)  评论(0编辑  收藏  举报
#1.
#A:python数字类型的完整工具包括:整数和浮点数、复数、固定精度的十进制数、有理分数、集合、布尔类型、无穷的整数精度、各种数字内置函数和模块

#2.
#A:python允许整数具有无穷的精度,只要内存空间允许,但是其运算速度可能很慢
#B:十六进制数字以0x或0X开头,八进制数字以0o或0O开头,二进制数字以0b或者0B开头,这些所有的常量都产生一个整数对象,仅仅是特定值的不同语法表示
#C:内置函数hex()、oct()、bin()把一个整数转为对应的进制表示的字符串,int(str, base)根据每个给定进制将一个字符串专为为一个整数
value0 = 0x10               #value0 = 16
value1 = 0o10               #value1 = 8
value2 = 0b10               #value2 = 2
str0 = hex(10)              #str0 = '0xa'
str1 = oct(10)              #str1 = '0o12'
str2 = bin(10)              #str2 = '0b1010'
value = int('10')           #value = 10
value = int('10', 8)        #value = 8
value = int('10', 2)        #value = 2
value = int('10', 16)       #value = 16

#3.
#A:复数的虚部以j或者J结尾
#B:可以用内置函数complex()来创建复数
value0 = 1 + 1j             #value0 = (1+1j)
value1 = complex(1, 2)      #value1 = (1+2j)

#4.
#A:is测试对象身份(也就是内存地址,严格意义的相等),对应有is not
Tem0 = [1, 2]
Tem1 = [1, 2]
value = Tem0[0] is Tem1[0]  #value = True
value = Tem0 is Tem1        #value = False
value = 1 is 1              #value = True
value = 1 is 1.0            #value = False

value = Tem0[0] == Tem1[0]  #value = True
value = Tem0 == Tem1        #value = True
value = 1 == 1              #value = True
value = 1 == 1.0            #value = True

#5.
#A:三目运算符
#B:yield 尚未研究
value0 = 1 if False else 2  #value0 = 2
value1 = 1 if True else 2   #value1 = 1
value3 = True and 1 or 2    #value3 = 1
value4 = False and 1 or 2   #value4 = 2

#6.
#A:切片
listTem = list(range(1, 10))#listTem = [1, 2, 3, 4, 5, 6, 7, 8, 9]
listTem0 = listTem[0:20]    #listTem0 = [1, 2, 3, 4, 5, 6, 7, 8, 9] 并不会因为越界产生错误
listTem1 = listTem[0:9:2]   #listTem1 = [1, 3, 5, 7, 9] #0:9:2中:2的意思是步进
value = slice(0, 9, 2)      #value
v0 = value.start            #v0 = 0
v1 = value.step             #v1 = 2
v2 = value.stop             #v2 = 9
listTem2 = listTem[value]   #listTem2 = [1, 3, 5, 7, 9]  listTem[0:9:2]等价于listTem[slice(0, 9, 2)]
listTem3 = listTem[-1:0]    #listTem3 = []
listTem4 = listTem[-1:0:-1] #listTem4 = [9, 8, 7, 6, 5, 4, 3, 2]

#7.
vlaue = 1 + 2, 3 + 4        #vlaue = (3, 7)
v0, v1 = 1 + 2, 3  + 4      #v0 = 3, v1 = 7
#v2, v3 = 1 + 2             #运行报错

#8.
#A:
'''
尽管str(),repr()在特性和功能方面都非常相似,事实上repr()返回的是一个对象的“官方”字符串表示,也就是说绝大多数情况下可以通过求值运算(使用内建函数eval())重新得到该对象,
但str()则有所不同。str()致力于生成一个对象的可读性好的字符串表示,它的返回结果通常无法用于eval()求值,但很适合用于print语句输出。
需要再次提醒的是,并不是所有repr()返回的字符串都能够用 eval()内建函数得到原来的对象。
eval()将字符串当成有效的表达式来求值并返回计算结果,往往运行较慢,它实际上会作为程序的一个片段编译并运行这个字符串。
'''
str0 = str('是')            #str0 = '是'
str1 = repr('是')           #str1 = "'是'"
#v0 = eval(str0)            #运行报错            
v1 = eval(str1)             #v1 = '是'

str0 = str([1, 2, 3])       #str0 = '[1, 2, 3]'
str1 = repr([1, 2, 3])      #str1 = '[1, 2, 3]'
v0 = eval(str0)             #v0 = [1, 2, 3]   
v1 = eval(str1)             #v1 = [1, 2, 3]

#9.
#A:python将A < B < C 解释为 A < B and B < C
#B://操作符通常称为截断除法,更准确的说法是floor(向下取整)除法,它截除掉余数并且针对整数操作符返回一个整数,若有操作符为浮点数则返回浮点数
#C:math.trunc()可以得到真正的截断除法,math.floor()向下取整除法,round()方法返回 x 的小数点四舍五入到n个数字
value = 4 / 3               #value = 1.3333333333333333
value = 4 / -3              #value = -1.3333333333333333
value = 4 // 3              #value = 1
value = 4 // -3             #value = -2
value = 4.0 // -3           #value = -2.0
import math
v0 = math.trunc(4 / 3)      #v0 = 1
v1 = math.trunc(4 / -3)     #v1 = -1
v2 = math.trunc(4.0 // -3)  #v2 = -2
v3 = math.floor(4 // -3)    #v3 = -2
v = math.floor(1.1)         #v = 1
v = math.floor(-1.1)        #v = -2
v0 = math.pi                #v0 = 3.141592653589793
v1 = math.e                 #v1 = 2.718281828459045
v0 = round(math.pi)         #v0 = 3
v1 = round(-math.pi)        #v1 = -3
v2 = round(math.pi, 2)      #v2 = 3.14
v3 = round(-math.pi, 3)     #v3 = -3.142