int & bool & string

主要内容:

  • 1. int 整数
  • 2. bool 布尔值
  • 3.字符串

1.整数 

  • 常见操作:+-*/  // % 其中 //的意思是 取整除返回商的整数部分。
  • bit_length()    一个数的二进制长度
    a = 15    #15 的二进制表示是1111
    print (a.bit_length())  # 4

2.bool 

  • True => 1 False => 0
    s = ""
    if s :
        print ("wahaha")
    while 1:  # 1和True效率: 1的效率比True高一点点
        print("还我钱!")

     

  • 可以当做False来用的数据: 0 "" [] {} () None

3. 字符串

    把字符连成串. 在python中⽤用', ", ''', """引起来的内容被称为字符串

3.1 索引

#     0  1 2 3 4 5 6
s1 = "百二秦关终属楚"
print (s1[0])
print (s1[1])
print (s1[2])
print (s1[3])
print (s1[6])
print (s1[7])      
print (s1[-1])       # -1 表示倒数.
print (s1[-5])       # 倒数第五个

注:索引超范围的报错     IndexError:  string index out of range

3.2 切片 (截取字符串的片段)

  • 语法: str[start: end]    规则:顾头不顾尾, 从start开始截取. 截取到end位置. 但不包括end   
    #     0  1 2 3 4 5 6
    s1 = "百二秦关终属楚"
    print (s1[0:3])    # 从0 获取到3 但不包括3 结果: 百二秦
    print (s1[3:6])    # 关属楚
    print (s1[4:7])    # 最大是7 ,但要想取到7 必须上限到8
    print (s1[2:10])   # 如果给的有边值已经超过了7那么相当于取到最后
    print (s1[2:])     # 从第二个取到最后,右边的那位可以不给
    print (s1[:5])     # 从头取的话左边可以不给
    print (s1[:])      # 原样输出
    print (s1[-1:-5])      # 默认方向是从左到右,从-1取不到-5
    print (s1[-5:-1])      # 同样取不到最后一个字,
    print (s1[-5:])        # 右边什么都不写 ,取到最后
    print (s1[:-1])        # 这是取到倒数第一个
  • 跳着截取     切片语法:  str[start:end:step]    start: 起始位置    end: 结束位置    step:步 (如果是整数, 则从左往右取. 如果是负数. 则从右往左取. 默认是1 ,若果为负数,成逆序效果)
    #    0 1 2 3 4 5 6 7 8 9
    s = "破釜沉舟百二秦关终属楚"
    print (s[1:7:2])   #从第一个开始取,取到第7个(不包括7)每两个取一个
    print (s[:6:2])    #从头取到第6个,每两个取一个
    print (s[4::2])    #从第四个取到最后,每两个取一个
    print (s[::2])     #从头取到尾,每两个取一个
    print (s[-1:-6:-2])    #从右往左取,步长是-1,效果成逆序  
    print (s[::-2])        #步长可以决定取的方向
    print (s[-6::-2])
  • 简单应用: 判断回文
    s = "上海自来水来自海上"  # 回文
    s1 = s[::-1]
    if s == s1:
        print("是回文")
    else:
        print("不是回文")

3.3 字符串的操作

  •  lower ()  & upper() 
    s = "Alex is not a good man! Sally is a good man"
    s1 = s.lower()
    print (s1)       #    结果 alex is not a good man! sally is a good man
    s = "Alex is not a good man! Sally is a good man"
    s2 =s.upper()
    print (s2)
    while True :
        content = input ("请输入你要喷的内容(输出Q退出)")
        if content.upper() == "Q" :
            break
        print (content)              #在输入时不需要区分大小写

    应用:

    #应用, 校验用户输入的验证码是否合法
    verify_code = "abDe" 
    user_verify_code = input("请输⼊入验证码:")
    if verify_code.upper() == user_verify_code.upper():
        print("验证成功")
    else:
         print("验证失败")
  • strip()    # 去掉左右两端的空格
    s = "      有志者事竟成       \t"
    print (s)
    s1 = s.strip()
    print (s1)

    应用:   

    # 模拟用户登录
    #用户的输入时无法保证合法的例如有空格,需要进行处理和判断
    username = input ("请输入用户名:").strip()
    password = input ("请输入密码:").strip()
    if username == "Alex"and password == "1234":
        print ("成功")
    else :
        print ("失败")

    s = "阳光很刺眼的阳光"
    print(s.strip(""))    #注意去除的是两端,中间的去不掉  结果:阳光很刺眼的阳
  • replace(old, new)
    s = "alex_wusir_ritian_taibai_evaj_eggon"
    s1 = s.replace("taibai","taihei")
    s2 = s.replace ("i","SB",2)     #意思是将字符串中的i换成SB,换两个
    print (s1)
    print (s2)
  • split()  根据括号中内容去切,当什么也不写,默认用空白去切  
    s = "alex_wusir_ritian_taibai_evaj_eggon"
    lst = s.split("ritian") # 刀有多宽 就要损失掉多少
    print(lst)                          #结果是:['alex_wusir_ritian_', '_evaj_eggon']
    s = "alex_wusir_ritian_taibai_evaj_eggon"
    lst = s.split("_") # 刀有多宽 就要损失掉多少
    print(lst)                           #结果是:['alex', 'wusir', 'ritian', 'taibai', 'evaj', 'eggon']
    print ("周润发\n周星驰周杰伦周笔畅")     # \n 意思是换行

    另外: 切割的内容在边上会出现空字符串

    s = ("周润发周星驰周杰伦周笔畅")
    lst = s.split("周润发周星驰周杰伦周笔畅")   # 切割的内容在边上. 会出现空字符串
    print (lst)                    # 结果是: ['', '']
    s = ("周润发周星驰周杰伦周笔畅")
    lst = s.split("周星驰周杰伦周笔畅")   # 切割的内容在边上. 会出现空字符串
    print (lst)                    # 结果是: ['周润发', '']
  • startswith()  & endswith()  
    s = "今天的内容非常简单.你们信吗? 作业也很容易. 就是整理不太好"
    s1 = s.startswith("太好了")
    s2 = s.endswith ("太好了")
    s3 = s.startswith("今天的")
    s4= s.endswith ("不太好")
    print (s1)
    print (s2)
    print (s3)
    print (s4)
  •  count & find()
    #    0  1 2 3 4 5
    s = "胡辣汤炸鸡啤酒烤鸭酱肘锅包肉炸鸡炸鸡炸鸡"
    s1 = s.count ("炸鸡") #   用来计数
    print (s1)            #结果4
    s2 = s.find ("疙瘩汤")      #如果找不到就返回-1
    print(s2)               #结果是-1
    s3 = s.find ("啤酒")
    print (s3)           #结果是 5  返回的是索引
    s4 = s.index("疙瘩汤")    #如果找不到就报错
  • isdigit()  判断是否是数字
    s = "I am sylar, I'm 14 years old, I have 2 dogs!"
    count = 0
    for c in s:
        if c.isdigit():   #判断是否是数字组成
            count = count + 1
    print(count)
  •  len() 求长度. 内置函数

    s = "我是上帝, 你也是上帝"
    print(len(s)) # 内置函数len(字符串) 返回给你字符串的长度
  • join()
    lst = ["汪峰", "吴君如", "李嘉欣", "陈慧琳", "关之琳"]
    #  遍历列表. 把列表中的每一项用"_" 做拼接
    s = "_".join(lst) # 把列表转化成字符串
    print(s,type(s))    #汪峰_吴君如_李嘉欣_陈慧琳_关之琳 <class 'str'>
    s1 = "汪峰_吴君如_李嘉欣_陈慧琳_关之琳"
    lis = s1.split("_") # 把字符串转化成列表
    print(lis,type(lis))     #['汪峰', '吴君如', '李嘉欣', '陈慧琳', '关之琳'] <class 'list'>
    print("*".join("马化腾")   # 马*化*腾
  •  for 迭代

    #for 变量 in 可迭代对象:
      # 循环体(break, continue)
    #else:
      #当循环结束的时候执行else
    s = "朱元璋朱棣"
    count = 0
    while count < len (s):  # 遍历字符串的第一种办法
        print (s[count])
        count =count + 1
    s = "朱元璋朱棣朱建峰"
    # for循环
    # for 变量 in 可迭代对象:
    # 把可迭代对象中的每一个元素 分别赋值给前面的变量, 可以方便可迭代对象的遍历
    for c in s:
        print(c)
  • for循环中出现的报错类型 TypeError 

     # TypeError: 'int' object is not iterable
    for i in 10:
        print(i)  #报错

     

 

 

 

 

 

 

 

 

 

 

 

 

  

 

posted @ 2018-09-05 21:32  一路向北_听风  阅读(305)  评论(0编辑  收藏  举报