常见的基本数据类型:
    1.int 整数  主要用来进行数学运算
    2.bool 布尔. 判断真假. if 和 while循环中常用
    3.str 字符串,一般放小量数据
    4.list 列表.可以存放大量的数据,用[]表示
    5.dict 字典{},以key:value的形式存储数据,查找速度快
    6.set 集合(数学,集合内没有顺序,分散分布)
    7.tuple 元组,用()表示 #不可变(内容不可改变)


一.int
    整数:常见的操作+,-,*,/,//,%,**

    bit_length() 一个数的二进制长度
    a = 1 # 10进制 1 二进制 1
    a = 2 # 10进制 2 二进制 10
    a = 3 # 10进制 3 二进制 11
    ---------------------------------------------e.g.-----
    a = 4
    print(a.bit_length())

    #结果:3     用二进制表示4是100,共3位,长度是3


二.bool
    类型转换结论:
    1.类型转换:想转化成XX数据类型   XX(目标)
    2.True => 1    False => 0
    3.可以当做False来用的数据:0,""空字符串,[]空列表{}空字典,tuple()空元组,set()空集合,None
      True:除了False的都是True.
    用法:

lst = [1, 2, 3]
if  lst:   #如果列表不为空,True,条件成立,如果为空,False,条件不成立,执行else
    pass
else:
    pass

4.所有的空的东西都是False
    -------------------True => 1------------------------

    while 1:    #True     1比True运行快
        print('哈哈哈')
    ---------------------类型转换-----------------------
    如果想把字符串转化成int    int(str)
    把int转化成str    str(int)
    结论: 想转化成xxx数据类型    xxx(目标)
    -------------------所有的空的东西都是False---------------------------
    s = "1"
    if s:     #True  结果为打印娃哈哈
    print("娃哈哈")

    s = ""      #False
    if s:     #False  结果不打印
    print("娃哈哈")


三.字符串
    1.字符:单一文字符号
    2.字符串:有序的字符序列
    字符串是由'" ''' """ 括起来的内容
    -------------------------------------------
    索引:一排数字,反映第某个位置的字符.索引的下标从0开始,使用[]来获取数据
    -------------------------------------------------------------
         0 1 2 3 4 5 6
    s = '张国荣是最帅的'
    print(s[0])    #张
    print(s[-1])   #倒数第一个字符     #的
    --------------------------------------------

    切片 s[start:end:step]   顾头不顾尾,end结束位置取不到,顺序从左往右切
    第三个参数:步长  默认是1,从左往右取;   当步长为-1时从右往左取
    正负代表方向,可以画数轴辨别方向
   工作原理: s[start + step]   # [1:8:2]   取1,3,5,7
    -----------------------------------------------
    s[0:3]   张国荣
    s[-3:-1] 最帅  #顾头不顾尾
    s[1:] 从第二个字切到结尾   #国荣是最帅的
    s[:2] 从头开始切到第二个字   #张国
    s[:] 从头切到尾       #张国荣是最帅的
    ---------------------------------------------

    s[1:5:2]  从1到4,步长是2,空一个字  # 国是
    s[::-1]   #把字符串顺序倒过来 空代表首尾   #的帅最是荣国张
    ----------------------------------------------
name = "aleX leNb"
   s = name[-1:-5:-1]
   print(s)
   #bNel
    ----------------------------------------------
s = input('请输入:')
    s1 = s[::-1]
    if s1 == s:
        print('是回文')
    else:
        print('不是回文')

    #回文e.g. 上海自来水来自海上   ,    12321

    小结:
    切片 s[start:end:step]   顾头不顾尾,顺序从左往右切
    start: 起始位置
    end: 结束位置,顾头不顾尾

    3.常用操作方法
        #字符串是不可变的数据类型
        1.upper() 转化成大写,忽略大小写的时候用
        2.strip() 去掉左右两端的空格,空白; \t 表示一个制表单位 ##################
          用户输入的内容都要去空白#######################################
          ###用户输入的内容无法保证合法,因此需要进行处理和判断
          strip(XX) 也可去掉内容两端的XX
        3.replace('old','new') 字符串替换
        4.split() 切割  结果是 list   split() 默认切割空白 即空格,\t,\n   \t = tab   #与join()相反   '_'.join(lst) 把列表中的元素拼接成字符串
        5.startswith() 判断是否以XXX开头;endswith 判断是否以XX结尾
        6.find() 查找
        7.isdigit() 判断是否是数字组成
        8.len() 求长度.内置函数,和print()一样用

        ------------------------capitalize 首字母大写---------------------------
        s = "alex is not a good man! Tory is a good man"
        s1 = s.capitalize()  #字符串首字母大写, 其他都变成小写
        print(s1)
        # Alex is not a good man! tory is a good man
        ----------------------lower 转化成小写-----------------------------------
        s = "alex is not a good man! Tory is a good man"
        s1 = s.lower()
        print(s1)
        # alex is not a good man! tory is a good man
        ---------------------upper 转化成大写------------------------------------
        s = "alex is not a good man! Tory is a good man"
        s2 = s.upper()
        print(s2)
        # ALEX IS NOT A GOOD MAN! TORY IS A GOOD MAN

        ---------------------upper 转化成大写------------------------------------
        while True:
            content = input('请输入你想说的话(按Q键退出):')
            if content.upper() == 'Q':
                break
            print(content)
        ------------------------swapcase 大小写互换---------------------------------
        s = "alex is not a good man! Tory is a good man"
        s1 = s.swapcase()  # 大小写互换
        print(s1)
        # ALEX IS NOT A GOOD MAN! tORY IS A GOOD MAN
        --------------------casefold 转换成小写-------------------------------------
        # casefold() 转化成小写,不常用,但是lower有些符号无法转化时可用casefold,,尤其是东欧字母
        s2 = "БBß" # 俄美德
        print(s2)
        print(s2.lower())
        print(s2.casefold()) # 都转化成小写. 支持的文字比lower多

        #БBß
        #бbß
        #бbss
        -----------------------title 把单词的首字母大写----------------------------------
        s = "class app_le bana2na_ora1nge_pear alex wusir"
        s1 = s.title() # 标题.把单词的首字母大写,不管中间有没有符号或数字
        print(s1)
        # Class App_Le Bana2Na_Ora1Nge_Pear Alex Wusir
        -------------------------center 居中--------------------------------
        s = "刘伟" # 2个字符共2个单位
        s1 = s.center(4,"*") # 把字符串拉长成4个单位 用*扩充
        print(s1)
        # *刘伟*
        -------------------------strip 去空白,去空格--------------------------------
        s = " \t       你好啊. 我叫赛利亚       "
        print(s)
        s1 = s.strip() # 去掉空白
        print(s1)

        #         你好啊. 我叫赛利亚
        #你好啊. 我叫赛利亚
        --------------------------模拟登陆-------------------------------
        username = input('请输入用户名:').strip()
        pwd = input('请输入密码:').strip()
        if username == 'alex' and pwd == '123':
            print('登陆成功')
        else:
            print('登录失败')

        ----strip(XX)  去掉内容两端的XX  .lstrip()去掉左边的空格 .rstrip()去掉右边的空格----
        s = "大红花很红的红"
        print(s.strip("红")
        #大红花很红的
     --------------------------.expandtabs() 更改\t的长度-----------------------------
        s6 = "alex wusir\teggon"
     print(s6) 
      print(s6.expandtabs())    # 可以改变\t的长度, 默认长度更改为8
        ------------------------- replace  替换-----------------------------------------
        s = '小红,小明,小白,小兰,小花'
        s1 = s.replace('小白','阿绿')
        print(s1)

        #小红,小明,阿绿,小兰,小花
        ------------------------- replace  替换,按顺序替换X个---------------------------------
#将name变量对应的值中的第一个"l"替换成"p",并输出结果
    name = "aleX leNb"
    print(name.replace('l','p',1))
--------------------------- split() 切割 ---------------------------------------
        s = '小红,小明-阿朱-小兰,小花'
        s1 = s.split('阿朱')  # 刀有多宽 就要损失掉多少
        print(s1)

        #['小红,小明-', '-小兰,小花']  得到的是个list
        -----------------------split() 切割的内容在边上-------------------------------------------
        s = "周润发周星驰周笔畅周杰伦"
        lst = s.split("周润发周星驰周笔畅周杰伦")  # 切割的内容在边上. 会出现空字符串
        print(lst)

        # ['', '']
        ------------------------------ \n 换行 --------------------------------
        print("周润发\n周星驰周笔畅周杰伦")

        '''
        周润发
        周星驰周笔畅周杰伦
        '''
        --------------------------- format() 格式化输出------------------------------------
        print("我叫%s, 我今年%d岁了, 我喜欢干%s" % ("alex", 18, "python"))
        print("我叫{}, 我今年{}岁了, 我喜欢干{}".format("alex", 18, "python"))
        print("我叫{0}, 我今年{1}岁了, 我喜欢干{2}".format("alex", 18, "python"))
        print("我叫{name}, 我今年{age}岁了, 我喜欢干{hobby}".format(name="alex", age=18, hobby="python"))
        #我叫alex, 我今年18岁了, 我喜欢干python
        -----------------------startswith() 以()开始  和 endswith()  以()结束-------------------------------------------
        s = "今天的内容非常简单.你们信吗? 作业也很容易. 就是整理不太好"
        print(s.startswith("太好"))
        print(s.endswith("太好"))

        #False
        #True
        -------------------------------count() 计数-----------------------------------
        s = "胡辣汤炸鸡啤酒烤鸭酱肘锅包肉炸鸡炸鸡炸鸡"
        print(s.count("炸鸡")) # 计数
        # 4
        ------------------------------ find() 搜索------------------------------------
        s = "胡辣汤炸鸡啤酒烤鸭酱肘锅包肉炸鸡炸鸡炸鸡"
        print(s.find("疙瘩汤")) # 如果找不到返回-1,找到则返回位置  建议用这个

        # -1
------------------------------ find() 搜索------------------------------------
     s = "胡辣汤炸鸡啤酒烤鸭酱肘锅包肉炸鸡炸鸡炸鸡"
      print(s.find('炸鸡',9))     #设置起始索引位置
     print(s.find('炸鸡',15,20))   #切片

      #14
      #16
--------------------------- index() 索引---------------------------------------
        s = "胡辣汤炸鸡啤酒烤鸭酱肘锅包肉炸鸡炸鸡炸鸡"
        print(s.index("胡辣汤")) # 如果找不到报错. 不建议用
        --------------------------- isnumeric 判断是否是数字,可识别中文及大写---------------------------------------
        s = "一二壹贰叁肆萬"
        print(s.isnumeric())

        # True
        ----------------------------- len() 显示字符串长度-------------------------------------
        s = "我是上帝, 你也是上帝"   #,后面有一个空格
        print(len(s)) # 内置函数len(字符串) 返回给你字符串的长度

        # 11
     
     判断 .isalnum() 是否由数字和字母组成   .isalpha()是否由字母组成,在python中,中文也当做字母处理  .isdigit(), .isdemical(), 是否由数字组成(不包括小数点)
      .isnumeric 判断是否由数字组成,可识别中文数字

    4.for循环
        for 变量 in 可迭代对象:             #int是不可迭代对象
            循环体(break, continue)
        else:
            当循环结束的时候执行else,如果循环被终止,不执行else.

    ------------------------ while循环--------------------------------
    s = "朱元璋朱棣"
    count = 0
    while count < len(s): # 遍历字符串的第一种办法
        print(s[count])
        count = count + 1

    ------------------------- for 循环--------------------------------------------
    s = "朱元璋朱棣朱建峰"
    for c in s:                     # s只能是字符串,不能是数字
        print(c)