# Numbers(数字)
#     int(有符号整型)
#     long(长整型[也可以代表八进制和十六进制])
#     float(浮点型)
#     complex(复数)
# String(字符串)
# List(列表)[]
# Tuple(元组)()
# Dictionary(字典){}


if __name__ == "__main__":
    # 注意:long 类型只存在于 Python2.X 版本中,在 2.2 以后的版本中,int 类型数据溢出后会自动转为long类型。在 Python3.X 版本中 long 类型被移除,使用 int 替代。
    a = 1
    print(type(a))  # <class 'int'>
    b = 1.0
    print(type(b))  # <class 'float'>
    c = 5j
    print(type(c))  # <class 'complex'>

    # 注意:从左到右索引默认0开始的,最大范围是字符串长度少1,从右到左索引默认-1开始的,最大范围是字符串开头。
    # 字符串用单引号或双引号都可以
    str = "abc"
    print(type(str))  # <class 'str'>
    str1 = 'a'
    print(type(str1))  # <class 'str'>
    print(str[1])  # b
    print(str[0:1])  # a
    print(str[0:2])  # ab

    list1 = ['a', 'b', 70, 9, "c"]
    print(type(list1))  # <class 'list'>
    print(list1[0])  # a
    print(list1[0:3])  # ['a', 'b', 70]
    # 第三个数字2 代表间隔1个位置
    print(list1[0:3:2])  # ['a', 70]
    list2 = [1, 2, 3]
    print(list1 + list2)  # ['a', 'b', 70, 9, 'c', 1, 2, 3]
    print(list2 * 2)  # [1, 2, 3, 1, 2, 3]

    # 注意:元组是不允许更新的。而列表是允许更新的
    tuple = (1, 2, '1', 'a')
    print(type(tuple))  # <class 'tuple'>
    print(tuple[0])  # 1
    print(tuple[0:2])  # (1, 2)
    print(tuple[0:2:2])  # (1,)
    print(tuple[2:])  # ('1', 'a')
    print(tuple[2:] * 3)  # ('1', 'a', '1', 'a', '1', 'a')

    tinydict = {"a": "b", "c": "d"}
    print(type(tinydict))  # <class 'dict'>
    print(tinydict["a"])  # b
    print(tinydict.get("a"))  # b
    print(tinydict.keys())  # dict_keys(['a', 'c'])
    print(tinydict.values())  # dict_values(['b', 'd'])
    # 将字典类型转为列表类型
    value = list(tinydict.values())
    print(type(value))  # <class 'list'>
    for i in value:
        print(i)