# print(1, 2, 3, 4, 5)
# print("python")
# print("python")
# print("python")
# print("python")
# print("python")
# print("python")


# 数值运算:+ - * / //(取余) **
# print(2**3)



# print(1.2-1.1)
# import decimal
# print(decimal.Decimal("1.2")-decimal.Decimal("1.1")) #  import导入decimal方法1

# import decimal
# a = decimal.Decimal("1.2")
# b = decimal.Decimal("1.1") #  import导入decimal方法2 a b变量赋值
# print(a - b)



# 第一部分 数值类型
# a = 123 #整数
# b = 1.23 #浮点型
# c = 2j #复数 (复数后面必须跟个J才成为复数)
# d = True # 布尔型(只有两种 True  False)   非常重要
# True相当于1    False则是0
# print(5<6) # 做比较的时候 True为真
# print(5>=6) # 做比较的时候 False为假



# import  math # 模块里取整的方法
# # 向上取整和向下取整
#
# a = math.ceil(5+2.2) #8
# b = math.floor(5+2.2) #7
#
# print(a)
# print(b)


# 类型转换

# a = 5  #整数
# b = 1.2 #浮点
# c = True #布尔
# d = 2j  #复数
# type查看这是什么数据类型
# print(type(a))    # int:整数
# print(type(b))    # float 浮点
# print(type(c))    # bool 布尔
# print(type(d))    # complex 复数
# e = float(a)   # 浮点
# print(e) #5.0
# print(type(e)) # 浮点型
# print(int(b))# 整数(1.2也是1, 1.9也是1)
# print(int(c)) # 1
# print(int(False)) # 0
# print(bool(0)) #False
# print(bool(-9.9)) # True
# print(bool(9))# True     (布尔类型除了0是假(False)之外,其他不管是正数还是小数或负数都是真(True) 非0就是真



# 第二部分 序列类型
# 1 字符串 = str
# print("love")
# print("1+3")
#括号里带""就是字符串,字符串里不管内容是什么 都会打印出字符串里的内容 不能进行数字运算 输入的时候是什么, 打印出的还是什么。

# 2 列表 = list
# 列表代表一个整体,在列表里面可以放任何的数据类型,每一个数据类型当中都需要用一个逗号进行分开,
# 每一个数据类型都是独立的个体,并且里面每一个数据类型都没有任何关系,他们只是同时存在这个列表当中而已。
# a = "啊啊啊啊"
# li = ["abc", 123, 1.2, True,1j, a , ["果冻", 2 , "男"]]
# 如果是两个不同的数据类型需要用逗号隔开
# print(li)
# print(type(li)) # list

# 3 元组 = tuple 如果多个变量以逗号隔开的情况下 外面没有用列表框柱的情况下,自动转化成元组
# x = ("abc", 123, 1.2, True,1j,  ["果冻", 2 , "男"])
# print(x)
# print(type(x)) # tuple

# 4 取列表、元组值 取值是从0开始   0就是取的第一个  就是索引取值
# z = ["果冻", 2 , "男"]
# s = ["果冻妈妈", 30 , "女"]
# print(s[0])
# print(z[0])
# print(s[2])
# 5 切片 取某一个范围之间的值称之为切片  左闭右开 取前不取尾
# [开始位置:结束位置+1]
# 列表切片
# li = [1,2,3,4,5,6,7,8,9,10]
# print(li[1:5]) # 取值结尾下标顺序位置从0开始往后数5下,不包括第5个,也就是取到的值是[2,3,4,5]  取前不取尾!!
# print(li[-1:-3])  # 这种情况取值返回的是空,切片是从左往右取的
# print(li[-6:-3])  # 这种情况取值返回的是[4,5,6], 还是从左往右取,取前不取尾,结束位置往前进一位 [开始位置:结束位置+1]
# print(li[-1])     # 取整数里面就填一个数字
# print(li[7:][1])  # 这种情况是可以理解成前面的[7;]l就是新的元组i3 = (7,8,9,10) 后面的[0]就是取这个元组的下标位置....
                   #暂时理解成第二个[]里值能有一个值,才可以取到整数int,如果是开头位置加结尾则取到的是列表不是整数。


# 元组切片 元组的切片取值方式和列表取值方式的一样!一样!一样!一样!一样!一样!一样!
# li2 = (1,2,3,4,5,6,7,8,9,10)
# print(li2[1:5]) # 取值结尾下标顺序位置从0开始往后数5下,不包括第5个,也就是取到的值是(2,3,4,5)  取前不取尾!!
# print(li2[-1:-3])  # 这种情况取值返回的是空,切片是从左往右取的
# print(li2[-6:-3])  # 这种情况取值返回的是(4,5,6), 还是从左往右取,取前不取尾,结束位置往前进一位 (开始位置:结束位置+1)
# print(li2[-1])     # 取整数里面就填一个数字
# print(li2[7:][0:2])   # 这种情况是可以理解成前面的[7;]l就是新的元组i3 = (7,8,9,10) 后面的[0:2]就是取这个元组的下标位置....
                        #暂时理解成第二个[]里值能有一个值,才可以取到整数int,如果是开头位置加结尾则取到的是列表不是整数
# 如果说元组只有一个元素的情况下打印出是一个字符串,如果只有一个元素还想保持元组的类型那么必须在元素后面加一个逗号,
# h = ("哈哈",)
# print(h)
# print(type(h))

# 指定改变元素 必须要用中括号取值 从0开始取    列表可以改变元素 ,元组、字符串不可改变元素
# li = ["果冻妈妈", 30 , "女"] # 列表可以改变元素
# # lo = ("果冻妈妈", 30 , "女") # 元组不可改变元素
# li[0] = "贝贝"
# # lo[1] = '20'
# print(li)
# # print(lo)
#
# d = 'qweasdztgb'
# print(d[3])
# d[2] = 'v' 字符串是不可改变元素的
# 序列类型都是可以通过索引切片取值的





# 作业
# 01 定义一个列表,列表中有四种数值类型,用多种方法取到第三个值

# a = [10, 8.8, True, 4j]
# print(a[-2])
# print(a[2])
# print(a[2:3])
# print(a[-2:-1])


# 02 有一个形式是(201905018),要求从这个格式得到年、月、日

# b = "201905018"
# print(b[0:4])
# print(b[5:6])
# print(b[7:])

# c = 201905018
# print(c // 100000)
# print(c // 1000 % 2019)
# print(c % 2019050)