一、啥是数据类型

​ 我们人类可以很容易的分清数字与字符的区别,但是计算机并不能呀,计算机虽然很强大,但从某种角度上看又很傻,除非你明确的告诉它,1是数字,“汉”是文字,否则它是分不清1和‘汉’的区别的,因此,在每个编程语言里都会有一个叫数据类型的东东,其实就是对常用的各种数据类型进行了明确的划分,你想让计算机进行数值运算,你就传数字给它,你想让他处理文字,就传字符串类型给他。Python中常用的数据类型有多种,如下:

>>整数型(int) ,字符串(str),布尔值(bool),列表(list),元组(tuple),字典(dict),集合(set).

  • int 数字:主要用于运算。1,2,3...
  • bool 判断真假:True, False.
  • str 简单少量的储存数据,并进行相应的操作。name = 'Dylan'
  • tuple 只读,不能更改。(1,'Dylan')
  • list 大量有序数据,[1,'ses',True,[1,2,3],{'name':'Dylan'}]
  • dict 大量数据,且是关联性比较强的数据 {'name':'Dylan','age':18,'name_list':['张三','李四']}

二、基础数据类型

  • int 整数型

    就是我们常见的数据类型,主要用于基本的数学运算,比如+ - * / 等等。

    • 十进制转二进制

      十进制整数转换为二进制整数:采用"除2取余,逆序排列"法。

      具体做法是:

      用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。

      0001 1010 ------> 26
      b = 1 * 2**4 + 1 * 2**3 + 0 * 2**2 + 1 * 2**1 + 0 * 2**0
      print(b) # 26
    • bit_lenth() 十进制转化成二进制的有效长度

      # bit_lenth 有效的二进制的长度
      i = 4
      print(i.bit_length()) # 3
      i = 5
      print(i.bit_length()) # 3
      i = 42
      print(i.bit_length()) # 4
  • bool 布尔值

    布尔值就两种:True,False。就是反应条件的正确与否。

    真 1 True。

    假 0 False。

    这里补充一下int str bool 三者数据类型之间的转换。

    • int 转 bool
    # int -----> bool
    i = 100
    print(bool(i)) # True 非零即 True i = 0
    print(bool(i)) # False 零即是 False
    • bool 转 int
    # bool -----> int
    t = True
    print(int(t)) # 1 True --> 1 f = False
    print(int(f)) # 0 False --> 0
    • int 转 str
    i = 99
    print(str(i)) # '99' 除了用引号包起来,和不能进行一些数学运算外,没啥特别的
    • str 转 int
    s = '88' # 全部由数字组成的字符串才可以转化为数字
    print(int(s)) # 88
    • str 转 bool
    s1 = 'Dylan'
    s2 = '' # 空字符串
    print(bool(s1)) # True 非空即
    print(bool(s2)) # False
    • bool 转 str
    t = True
    print(str(t)) # 'True'
    t = False
    print(str(t)) # '' 反回的是个空字符串
  • str 字符串

    Python中凡是用引号引起来的数据可以称为字符串类型,组成字符串的每个元素称之为字符,将这些字符一个一个连接起来,然后在用引号起来就是字符串。

    • 字符串的索引与切片

      • 索引

        索引即下标,就是字符串组成的元素从第一个开始,初始索引为0以此类推。

        s = 'ABCDEFGHIJ'
        0123456789 #字母下面对应的数字就叫 下标(又叫索引)
        --------------------------------------------
        根据索引(下标),找到字符串中的某一个元素.)
        s = 'ABCDEFGHIJ'
        s1 = s[1] #根据索引(下标),找到字符串中的某一个元素.
        print(s1) #结果是 B
      • 切片

        切片就是通过索引(索引:索引:步长)截取字符串的一段,形成新的字符串(原则就是顾头不顾尾)

        # 正取  切片规则:顾头不顾尾  格式:s1 = s[首:尾:步长]
        s = 'ABCDEFGHIJ'
        s2 = s[0:5] #取的 ABCDE 顾头不顾尾
        s3 = s[0:5:2] #取的 ACE 顾头不顾尾 格式:s1 = s[首:尾:步长]
        --------------------------------------------
        # 倒取 切片规则:顾头不顾尾 格式:s1 = s[首:尾:步长]
        s = 'ABCDEFGHIJ'
        s4 = s[3::-1] #取的 DCBA Ps.反取 递减正查
        print(s4) s5 = s[::-1] #取的 JIHGFEDCBA Ps.反取整个列表(方法一)
        print(s5) s6 = s[-1::-1] #取的 JIHGFEDCBA Ps.反取整个列表(方法二)
        print(s6)
    • 字符串的常用方法

      • s.upper() 全部变成大写,对数字没有影响

        s = 'an533wangxiaoyao'
        s2 = s.upper() # 全部变成大写,对数字没有影响
        print(s2) # AN533WANGXIAOYAO
      • s.lower() 全部变成小写,对数字没有影响

        s = 'ABC12533wangxiaoyao'
        s21 = s.lower() # 全部变成小写,对数字没有影响
        print(s21) # abc12533wangxiaoyao
        • <全部变大写或小写 验证码实例应用>

          s_str = 'weFD'
          print('验证码:',s_str)
          i = 0
          while i < 1:
          you_input = input('''请输入验证码,不区分大小写:
          >>>''')
          if s_str.lower() == you_input.lower():
          print('验证成功')
          i = 1
          else:
          print('输入有误,请重新输入!')
          agin = input('是否退出[y/n]')
          if agin != "y":
          i = 1
      • s.startswith() 以什么开头

        s = 'Dylan1egonwu'
        s7 = s.startswith('Dyl') #判断这个字符串是不是以 Dyl 开头的
        s71 = s.startswith('e',2,5) #切片操作,判断字符串索引中2到5的位置是不是以 e 开头
        print(s7,s71) #打印的结果反回的是 True 或者 False 可以做 while 或者 if 判断条件
      • s.endswith() 以什么结尾

        s = 'Dylan1egonwu'
        s8 = s.endswith('wu') #判断这个字符串是不是以 wu 结尾的.
        s81 = s.endswith('l',2,5) #切片操作,判断字符串索引中2到5的位置是不是以 l 结尾
        print(s8,s81) #打印的结果反回的是 True 或者 False 可以做 while 或者 if 判断条件
      • s.replace() 替换

        s = '来看待街坊邻居复合大师街坊法好的撒见客户'
        s11 = s.replace('街坊','老王',1) # 这里面这个1 是在当前字符串里替换几次
        print(s11) # 来看待老王邻居复合大师街坊法好的撒见客户
      • s.strip() 去前后字符(s.rstrip() 从右删 / s.lstrip() 从左删 )

        默认去空格,只能去前后,不能去字符串中间的空格或特殊字符

        s = '   alex1egonwusir    '
        s9= s.strip()
        print(s9) # alex1egonwusir
        l = ' @alex1e@$gonwu!sir@!$ '
        s88= l.strip('@$! ')
        print(s88) # alex1e@$gonwu!sir

        ->例子

        username = input('名子:').strip() # 假如输入的内容前后有空格
        if username == '春哥':
        username = input('名子:') #还可以这么写
        if username.strip() == '春哥': #还可以这么写
        print('恭喜春哥发财!')
      • s.split() 字符串拆分成列表 str ---->list

        s = 'Dylan 1eg on wusir'
        l = s.split() #默认以空格拆分成列表
        print(l) # ['Dylan', '1eg', 'on', 'wusir'] s = 'Dylan; 1eg; on; wusir'
        l = s.split(';') #也可以用其它字符拆分成列表
        print(l) # ['Dylan', ' 1eg', ' on', ' wusir']
      • join 非常好用

        s1 = 'alex'
        s2 = '+'.join(s1)
        print(s2,type(s2)) # a+l+e+x <class 'str'> l1 = ['太白', '女神', '吴超']
        # 前提:列表里面的元素必须都是str类型
        s3 = ':'.join(l1)
        print(s3) # 太白:女神:吴超
      • s.count() 找出这个字符串里有几个相同元素 可以切片找.可以两个字线做为一个整体找.

        s = 'alex1egonwusir'
        s10 = s.count('a') #找出这个字符串里有几个'a' 可以切片找.可以两个字线做为一个整体找.
        print(s10) # 1
      • format 的三种玩法 格式化输出 可替代 %s %d %% 占位符

        • res='{} {} {}'.format('egon',18,'male')

        • res='{1} {0} {1}'.format('egon',18,'male')

        • res='{name} {age} {sex}'.format(sex='male',name='egon',age=18)

        # 第一种用法:
        msg = '我叫{}今年{}性别{}'.format('Dylan',18,'男')
        print(msg)
        # 第二种用法:
        msg = '我叫{0}今年{1}性别{2}我依然叫{0}'.format('Dylan', 18,'男')
        print(msg)
        # 第三种用法:
        a = 18
        msg = '我叫{name}今年{age}性别{sex}'.format(age=a,sex='男',name='Dylan')
        print(msg)
      • is 系列:

        • s.isalnum() 字符串由字母或数字组成

          name = 'taibai123'
          print(name.isalnum()) #字符串由字母或数字组成
        • s.isalpha() 字符串只由字母组成

          name = 'taibai123'
          print(name.isalpha()) #字符串只由字母组成
        • s.isdecimal() 字符串只由十进制组成

          name = 'taibai123'
          name = '100①'
          print(name.isdecimal()) #字符串只由十进制组成
      • for 循环

        s = 'fdsafsggfdhgsczzz'
        for i in s: #循环遍历变量 s,每次遍历一个字符,赋值给 i.
        print(i) #遍历打印 i
      • in 的用法(还有 not in )

        s = 'fdsfjkaf苍井空fdafasfwlla'
        if '苍井空' in s: # 如果变量 s 中有'苍井空'
        print ('你的评论有敏感词..') # 将打印'你的评论有敏感词..'

记录我的 python 学习历程-Day03 数据类型 str切片 for循环的更多相关文章

  1. 记录我的 python 学习历程-Day03 列表/元组/rang

    一.列表初识 列表是 Python 的基础数据类型之一,它是以''[ ]''的形式括起来的,每个元素用","隔开,属于容器型数据类型,他可以存放大量的.各种类型的数据. 基本格式 ...

  2. 记录我的 python 学习历程-Day07 基础数据类型进阶 / 数据类型之间的转换 / 基础数据类型总结 / 编码的进阶

    基础数据类型 str(字符串) str:补充方法练习一遍就行 s.capitalize() 首字母大写,其余变小写 s = 'dyLAn' print(s.capitalize()) # Dylan ...

  3. 记录我的 python 学习历程-Day02-while 循环/格式化输出/运算符/编码的初识

    一.流程控制之--while 循环 循环就是重复做同一件事,它可以终止当前循环,也可以跳出这一次循环,继续下一次循环. 基本结构(基本循环) while 条件: 循环体 示例 # 这是一个模拟音乐循环 ...

  4. 记录我的 python 学习历程-Day13 匿名函数、内置函数 II、闭包

    一.匿名函数 以后面试或者工作中经常用匿名函数 lambda,也叫一句话函数. 课上练习: # 正常函数: def func(a, b): return a + b print(func(4, 6)) ...

  5. 记录我的 python 学习历程-Day05 字典/字典的嵌套

    一.字典的初识 为什么要有字典 字典与列表同属容器型数据类型,同样可以存储大量的数据,但是,列表的数据关联性不强,并且查询速度比较慢,只能按照顺序存储. 什么是字典 先说一下什么叫可变与不可变的数据类 ...

  6. 记录我的 python 学习历程-Day06 is id == / 代码块 / 集合 / 深浅拷贝

    一.is == id 用法 在Python中,id是内存地址, 你只要创建一个数据(对象)那么就会在内存中开辟一个空间,将这个数据临时加载到内存中,这个空间有一个唯一标识,就好比是身份证号,标识这个空 ...

  7. 记录我的 python 学习历程-Day11 两个被忽视的坑、补充知识点、函数名的应用、新版格式化输出、迭代器

    补充知识点 函数形参中默认参数的陷阱 针对不可变数据类型,它是没有陷阱的 def func(name, sex='男'): print(name) print(sex) func('Dylan') # ...

  8. 记录我的 python 学习历程-Day12 生成器/推导式/内置函数Ⅰ

    一.生成器 初识生成器 生成器的本质就是迭代器,在python社区中,大多数时候都把迭代器和生成器是做同一个概念. 唯一的不同就是: 迭代器都是Python给你提供的已经写好的工具或者通过数据转化得来 ...

  9. 记录我的 python 学习历程-Day08 文件的操作

    文件操作的初识 用 python 代码对文件进行各种操作. 基本构成: 文件路径:path 打开方式:读.写.追加.读写.写读-- 编码方式:utf-8 / gbk / gb2312-- f = op ...

随机推荐

  1. 石头剪刀步(rps):dp,概率&期望

    既然已经给std了,直接扔代码啦.代码注释还是不错哒. 因为我也有点懵,不明白的或有不同见解的一定要在评论区喷我啊! #include<bits/stdc++.h> using names ...

  2. 用js和css实现选项卡效果+jq(2019-10-09)

    1效果图: 2代码: html: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"& ...

  3. vue自定义长按指令

    1.前言 在word中,当我们需要删除一大段文本的时候,我们按一下键盘上的退格键,就会删除一个字,当我们长按住退格键时,就会连续不停的删除,这就是键盘按键的长按功能.那么我们也想在网页中让一个按钮也具 ...

  4. 基于docker搭建Jenkins+Gitlab+Harbor+Rancher架构实现CI/CD操作(续)---Harbor的安装

    前期安装文档:https://www.cnblogs.com/lq-93/p/11828626.html Harbor的作用:     开发提交代码至gitlab容器中,Jenkins拉取代码构建镜像 ...

  5. 必知必会的JavaJDK工具

    JDK中有很多用于监控诊断的系统工具,对于Java程序员来说,无疑是用来了解自己程序运行时性能好坏的强大工具. 在JDK的bin目录下就可以找到这些工具. JPS 在Linux有一个命令叫做ps,可以 ...

  6. vue 封装方法

    个我这个是局部引入方法,下次有需要全局在补上(全局:在main.js文件引入封装的方法js文件,然后用Vue.prototype) 一.新建一个js文件loading.js 二.编辑loading.j ...

  7. Spring Bean的生命周期、后置处理器、定义继承

    目录: 了解Spring的基本概念 Spring简单的示例 Spring Bean的定义及作用域 1.Bean的生命周期 Bean的生命周期可以简单的理解为:Bean的定义——Bean的初始化——Be ...

  8. 【前端知识体系-CSS相关】CSS预处理器

    1.常见的CSS预处理器有哪些? [!NOTE] css预处理器:用一种专门的编程语言,为CSS增加了一些编程的特性,将CSS作为目标生成文件,然后开发者就只要使用这种语言进行编码工作,可以让你的CS ...

  9. 【评测机】评测时报错cc1plus: fatal error: /xx/xx/main.cpp: Permission denied compilation terminated.的解决方法

    事情是这亚子发生的,原本建立评测机的时候就出现过这个问题,但莫名其妙就解决了. 报错的文件路径是位于docker内的,所以本质上这个错误是docker内的没有权限执行相关文件. 原因是centos7中 ...

  10. 小白学习React官方文档看不懂怎么办?2.JSX语法

      接下来我们就要讲到JSX语法了,在我们讲它之前,我们先引入一个概念叫语法糖.     听到这个名字首先我们可能会想到一个词叫”糖衣炮弹“,那么什么叫糖衣炮弹呢,就是给你说各种好听的话,来迷惑你,但 ...