#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