zoukankan      html  css  js  c++  java
  • Python学习-基本类型、str基本操作、for循环

    接下来记录下python中基本数据类型、字符串的基本操作以及for循环。

    基本数据类型一览

    python中基本数据类型有int、str、bool、list、tuple、dict和set。

    #! /usr/bin/env python
    # -*- coding:utf-8 -*-
    
    # 数据类型
    '''
    python中一般数据类型如下几种,简单一览
    1 数值类型 int
    2 字符类型 str
    3 布尔型 bool
    4 列表 list
    5 元祖 tuple
    6 字典 dict
    7 交集并集差集 set
    '''
    
    # int
    a=1
    
    # str
    b="clyang"
    
    # 布尔
    c=True
    
    # 存储大量数据,列表
    d=[1,2,"clyang",'123']
    
    # 存储大量数据,元组,值不可以改变
    e=(1,2,"clyang",'123')
    
    # 字典,查询效率高
    f={'name':'clyang'}
    

    int、bool、str类型相互转化

    int类型注意python2和python3的区别,python2中int超出范围,将自动转换成long类型,python3中只有int类型。

    #! /usr/bin/env python
    # -*- coding:utf-8 -*-
    from __future__ import division
    
    '''
    int类型
    int在python2和python3中是有区别的
    python2中:
    (1)int数字范围在32位电脑和64位电脑有区别
    (2)int超出范围,将自动转换成long类型
    (3)int做除法运算时,只能得到整数,如果需要得到小数需要在前面添加 from __future__ import division
    python3中:
    (1)只有int类型
    (3)除法运算可以保留小数位
    
    '''
    
    var=9/2
    print(var) #4.5
    
    '''
    二进制转10进制,比较简单,幂指数运算相加
    10进制转2进制,也较为简单,对2取余,参考自己博客
    '''
    
    # int类型的方法
    i=8
    # 二进制的有效位长度
    print(i.bit_length()) # 1000 -> 4
    i=10
    print(i.bit_length()) # 1010 -> 4
    i=22
    print(i.bit_length()) # 10110 -> 5
    
    '''
    数字转字符串,字符串转数字
    '''
    print(str(i))
    
    str1='520'
    print(int(str1))
    
    '''
    数字转布尔,布尔转数字
    只有0才是False
    '''
    print(bool(1)) #True
    print(bool(0)) #False
    print(int(True)) #1
    print(int(False)) #0
    
    '''
    字符串可以转布尔,但是布尔转字符串没啥意义
    只有空字符串,转换才是False,其他都是True
    '''
    
    print(bool('')) #False
    print(bool(' ')) #True
    print(bool('buddy')) #True
    
    # 只要输入内容,a就是True
    a=input("请输入内容")
    if a:
        print(a)
    else:
        print("你没有输入任何内容")
    

    str相关操作

    str的基本操作很多,逐一记录下。

    切片

    就是截取字符串,它有如下特点。

    (1)从左至右是有顺序的,有下标和索引,可以根据下标来切片;

    (2)类似java,截取时顾头不顾尾;

    (3)可以反着取,最右边字符下标从-1开始,然后往左就是-2,-3…;

    (4)切片可以加步长;

    name='中华人民共和国'
    # 从左至右是有顺序的,有下标和索引,可以根据下标来切片
    print(name[0],type(name[0])) #中 <class 'str'>
    
    # 取一定的范围,是顾头不顾尾
    print(name[0:2]) #中华
    print(name[:2]) #0开始,0可以省略
    
    # 可以反着取,最右边下标为-1
    print(name[-1]) # 国
    print(name[-3:]) # 共和国
    
    # 切片可以加步长
    print(name[::1]) # 从0索引开始到结尾,可以省略0,和最后的索引,步长为1
    print(name[::2]) # 中人共国
    
    # 反向切片步长,从最后一位开始,反向步长1,可以实现倒序提取
    print(name[-1::-1]) #国和共民人华中
    
    print(name[-1:-5:-2]) #国共
    

    upper/lower

    注意,大小写转换都会产生新的字符串,原字符串是不会变化的。

    # upper lower
    value = 'clyang'
    new_value = value.upper()
    print(value) # clyang
    print(new_value) # CLYANG
    

    startwith/endwith

    判断是否以某个字符开头或结尾,比较常用。

    # startwith endwith 
    print(value.startswith('c')) #True
    print(value.startswith('cl')) #True
    print(value.endswith('g')) #True
    

    strip

    可以去除空格,制表符 ,以及换行符 ,有strip、lstrip和rstrip。

    # stip去除space 	 
    、rstrip右,lstrip左
    # 去除字符右边空格
    var = 'clyang   '
    right_new_var = var.rstrip()
    print(right_new_var)
    
    # 去除字符左边空格
    var = '   clyang'
    left_new_var = var.lstrip()
    print(left_new_var)
    
    # 去除两边的空格
    var = '   clyang   '
    all_new_var = var.strip()
    print(all_new_var) 
    
    # 可以去掉指定字符
    var = 'abc我靠abc'
    print(var) #abc我靠abc
    new_var=var.strip('abc')
    print(new_var) #我靠
    

    replace

    可以进行字符串替换,并且最后一个参数可以指定替换多少个,替换没有左右替换。

    # replace 
    var = '去你大爷的'
    new_var = var.replace('大爷', '**')
    print(new_var) #去你**的
    # 替换两个大爷
    var = '去你大爷的大爷SB'
    new_var = var.replace('大爷', '**', 2)
    print(new_var) #去你**的**SB
    

    split

    默认按照空格切割,也有split、rsplit和lsplit,切割完后,返回一个列表list,切割不会改变原字符。

    # split 字符串切割
    var = '去你,大爷的,大爷,SB'
    # new_var = var.split(',') # 全部切割
    new_var = var.split(',', 1)  # 只按第一个分隔符来切分
    print(new_var,type(new_var)) #['去你', '大爷的,大爷,SB'] <class 'list'>
    
    # 字符串从右边开始切割
    var = '去你,大爷的,大爷,SB'
    new_var = var.rsplit(',', 1)
    # new_var = var.rsplit(',')
    print(new_var) #['去你,大爷的,大爷', 'SB']
    

    join

    非常好用,列表list转换成字符串,但是要求列表里全是字符。

    var=['clyang','messi','ronald']
    # 使用:拼接
    new_var=':'.join(var)
    print(new_var,type(new_var)) # clyang:messi:ronald
    

    count

    可以计算字符出现的次数。

    # 计算a出现的次数
    var='abagoghohgoghoghgohg'
    print(var.count('a')) # 2
    

    is

    is可以判断字符是否是数字,字母,提供了一系列API。

    (1)isdigit和isdecimal都可以判断是否为数字,但是后者判断是否为十进制数字,对①这种它就判断不能算数字了;

    (2)isalpha:判断是否为字母;

    (3)isalnum:判断是否为字母和数字组成;

    # is的使用
    var ='1000①'
    print(var.isdigit()) # True
    print(var.isdecimal()) # False
    
    num=input("请输入金额")
    if num.isdecimal():
        print(int(num))
    else:
        print("输入错误")
    
    print(var.isalpha()) #False
    print(var.isalnum()) #True
    

    len

    计算字符串长度。

    count = len('123456')
    print(count) # 6
    

    format

    一般有三种使用方法。

    # 字符串格式化1,直接使用{}作为类似占位符使用
    name='我叫{},今年{},我为我{}学python,没错,我的名字是{}'.format('clyang',34,'儿子','clyang')
    print(name)
    
    # 字符串格式化2 0 1 2 就是后面的索引号,可以重复使用
    name = '我叫{0},今年{1},我为我{2}学python,没错,我的名字是{0}'.format('clyang', 34, '儿子')
    print(name)
    
    # 字符串格式化3 ,可以使用映射
    name = '我叫{name},今年{age},我为我{name}学python,没错,我的名字是{name}'.format(name='clyang',age=28)
    print(name)
    
    # console输出
    我叫clyang,今年34,我为我儿子学python,没错,我的名字是clyang
    我叫clyang,今年34,我为我儿子学python,没错,我的名字是clyang
    我叫clyang,今年28,我为我clyang学python,没错,我的名字是clyang
    

    encode

    让字符按照指定编码格式输出。

    # encode
    name = '李杰'  # 解释器读取到内存后,按照unicode编码方式存储,这里两个中文字符占8个字节
    v1 = name.encode('UTF-8')  # b'xe6x9dx8exe6x9dxb0' 6个字节
    print(v1)
    v2 = name.encode('GBK')  # b'xc0xeexbdxdc' 4个字节
    print(v2)
    

    for循环

    (1)for循环适合循环打印字符串,如果想得到死循环,需要用while;

    (2)有穷尽的情况优先使用for,没有则优先使用while;

    (3)for循环中也可以使用break,continue;

    #! /usr/bin/env python
    # -*- coding:utf-8 -*-
    
    # while循环
    logo='我是最帅的,就问你服不服老铁'
    
    index=0
    print(len(logo))
    while index<len(logo):
        print(logo[index])
        index+=1
    
    print("-----for循环-----")
    
    # for循环
    for item in logo:
        print(item)
    
    # for循环中也可以使用break、continue
    print("-----for循环-continue-----")
    for item in logo:
        if item==',':
            continue
        print(item)
    
    # for循环中也有for else
    print("-----for-else-----")
    for item in logo:
        if item==',':
            continue
        print(item)
    else:
        print("老铁你说的都对")
        
    #控制台打印
    14
    我
    是
    最
    帅
    的
    ,
    就
    问
    你
    服
    不
    服
    老
    铁
    -----for循环-----
    我
    是
    最
    帅
    的
    ,
    就
    问
    你
    服
    不
    服
    老
    铁
    -----for循环-continue-----
    我
    是
    最
    帅
    的
    就
    问
    你
    服
    不
    服
    老
    铁
    -----for-else-----
    我
    是
    最
    帅
    的
    就
    问
    你
    服
    不
    服
    老
    铁
    老铁你说的都对
    
    Process finished with exit code 0
    

    for循环中可以配合range使用。

    # range的使用,配合for循环,打印1-10
    for item in range(1,11): # range里是一个列表,自动生成[1,2,3,...,10]
        print(item)
    
    # range的使用,配合for循环,打印1-10,但是不打印7
    for item in range(1,11): # range里是一个列表,自动生成[1,2,3,...,10]
        if item==7:
            continue
        print(item)
    #  控制台打印
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    1
    2
    3
    4
    5
    6
    8
    9
    10
    
    Process finished with exit code 0
    

    以上。

  • 相关阅读:
    CentOS下Zabbix安装部署及汉化
    用jmeter通过ssl验证访问https
    VMware安装CentOS时,无法以图形界面安装解决办法
    MySQL数据库不能远程访问的解决办法
    CentOS搭建LNMP环境
    jstack+top定位性能问题
    用Fiddler模拟低速网络环境
    Linux下history命令用法
    Jmeter3.0发布,版本更新都更新了什么
    【转】gc日志分析工具
  • 原文地址:https://www.cnblogs.com/youngchaolin/p/12323797.html
Copyright © 2011-2022 走看看