万恶之源 - Python基础数据类型一
整数
整数在Python中的关键字用int来表示; 整型在计算机中运于计算和比较
在32位机器上int的范围是: -2**31~2**31-1,即-2147483648~2147483647
在64位机器上int的范围是: -2**63~2**63-1,即-9223372036854775808~9223372036854775807
在python3中所有的整数都是int类型. 但在python2中如果数据量比较大. 会使用long类型.
在python3中不存在long类型 整数可以进行的操作:
整数的加
- a = 10
- b = 20
- print(a + b)
- 结果:
- 30
整数的减
- a = 10
- b = 20
- print(b - a)
- 结果:
- 10
整数的乘
- a = 10
- b = 20
- print(a * b)
- 结果:
- 200
整数的除
- a = 10
- b = 20
- print(b / a)
- 结果:
- 2.0
# 注意点:当我们使用Python3的时候我们除法获取到时浮点数,也就是小数,但是使用Python2的时候使用除法获取的就是整数
整数的整除
- a = 10
- b = 20
- print(b // a)
- 结果:
- 2
整数的取余
- a = 5
- b = 2
- print(a % b)
- 结果:
- 1
整数的次方(幂)
- a = 5
- b = 2
- print(a ** b)
- 结果:
- 25
注意点: 在Python2中存在long(长整型) 但是在Python3中long(长整型)不存在
布尔值
布尔值(bool) 判断真假; 取值只有 True False
转换问题:
- str ==> int
- n = int('22')
- print(n)
结果:
22
#注意点:字符串中的内容必须是阿拉伯数字才能强行转换
- int ==> str
- n = str(22)
- print(n)
结果:
22
- int ==> bool
- n = bool(4) # bool(-1) 结果也是True
- print(n)
结果:
True
注意点: 使用bool转换的时候只要是非0的都为True
- bool ==> int
- n = int(True) # int(False) 结果是0
- print(n)
结果:
1
- bool ==> str
- n = str(True)
- print(n)
- 结果:
- True
- 注意点: 只要字符串中的内容不为空,所得到的结果就是True
- str ==> bool
- n = str(True)
- print(n)
- 结果:
- True
字符串
字符串(str) 字符串, 可以保存少量数据并进行相应的操作
在第一天的时候咱们简单的认识了下字符串,今天我们好好的来认识一下这个让你又喜又优的字符串
字符串是可以存储一些数据,方便我们使用
字符串加
- a = '世界'
- b = '你好'
- print(a + b)
- 结果:
- 世界你好
通过刚刚我们的测试发现字符串也是可以进行加法操作的,字符串相加其实有个专业的名词 --- 字符串拼接;相加的规则就是必须都是字符串才能相加
字符串中是不能进行减法和除法操作的,通过这句话就能得知字符串是可以进行乘法操作的,我们立马来看一下:
字符串乘
- a = '坚强'
- print(a * 8)
- 结果:
- 坚强坚强坚强坚强坚强坚强坚强坚强
字符串的乘法就是将多个字符串拼接到一起,乘法的规则:只能是字符串和数字相乘
索引(下标)
大家在上学的时候就会发现在一个班有的同学的名字是一样的,最后大家为了好区分就有了外号,我们每个人都有个学号,其实学校就是为了防止重名找错人,
学号就是一种能够保证唯一且准确的手段,这种手段在计算机中存在,这种手段叫做索引,也有人称之为下标.注意:索引如果操作有误就会报错
图上就是对"meet"字符串进行索引排号,其实图上有一点大家不难看出m对应的是数字0,如果让我们人来给排号.下意识的会从1开始.
因为我们从小的时候就是从1开始数数的,但是在计算机中数数确实要从0开始,其实这个点也是对程序的入门.
以后在碰到这种类似的问题我们就知道是从0开始计数,废话不多说我们来看看,我说的到底行不行.
- name = 'meet'
- # 索引 0123
- print(name[0])
- 结果:
- m
细心的老铁们会发现这[ ]是干啥的,这个是一个查找,我不知道字符串中第一个是什么,但是我知道第一个的索引,我就可以通过这个方式来查看
比方:我不知道这个学生叫什么,但是我知道他的学号.我也可以通过学号找到这个同学.
图上这个是从左到右的一种排序,其实还有一种从右像左的排序,看下图:
这个查看和上边的一样,只不过是索引排序的方式不一样,他这次的排列序号是从右向左并且还是以-1开始,这里的-1其实就是表示我们的倒数第一个
-2表示倒数第二个,这样排列,如果我们的字符串比较长的时候想要获取最后一个就完全可以使用-1,看以下示例:
- name = 'meet'
- # 索引 -4-3-2-1
- print(name[-1])
- 结果:
- t
告诉大家一个小技巧,当开始的是我们不能明确的区分这个字符串中的每个索引的时候,我们就先把每个字母对应的索引写下来,这样就方便我们查找
上边我们说完了索引,你们就以为完事了是吗?不是滴,咱们还有来个内容没有进行讲解,分别是切片和步长
切片
切片又是什么呢?我们先来看一个示例:
- name = 'meet'
- # 索引 0123
- print(name[0:3])
- 结果:
- mee
[第一个位置是开始:第二个位置是终止]中间必须使用分号,这样的写法就是从索引0开始获取到索引3结束
这个结果是不是和大家想的有点出入啊,大家肯定认为获取到的内容是meet,但是为什么是mee呢,因为终止的索引是不包含的获取的是这个区间的内容
想想咱们在买肉的时候,有一个块整肉,这块整肉就后边有点肥,不想要是不是就让老板给切掉了,我们就买前边的部分啊.在生活中这种神操作就是切片
我也知道你们刚接过这些东西,使用起来不是很熟悉,尤其是切片这部分,在悄悄的告诉你们个小技巧,下次当看到切片中终止位置的时候把这个数减一就ok啦
步长
步长又是什么呢?先看示例:
- name = 'meet'
- # 索引 0123
- print(name[0:3:1])
- 结果:
- mee
发现我在中括号中最后一个位置写了一个东西,也没什么变化,是的没有变化,因为我们不写的时候他默认就是1,我们换个数字在来看看
- name = 'meet'
- # 索引 0123
- print(name[0:3:2])
- 结果:
- me
这又是啥情况呢?想想我开始告诉大家的中括号里第一个参数是起始位置,第二参数是终止位置,第三个参数现在告诉大家是步长(每次走几步)
当步长设置为2的时候,咱们只需要用起始位置0加上步长2,结果也就2然后在把索引为2的找到,2在加上步长2就是4,当要查找索引4是发现终止索引就是3,
所有不会进行查找.最终的结果就是me.
练习1
- s = 'Python最NB'
- 获取s字符串中前3个内容
- 获取s字符串中第3个内容
- 获取s字符串中后3个内容
- 获取s字符串中第3个到第8个
- 获取s字符串中第2个到最后一个
- 获取s字符串中第1,3,5个内容
- 获取s字符串中第2,4,6个内容
- 获取s字符串中所有内容
- 获取s字符串中第4个到最后一个,每2个取一个
- 获取s字符串中倒数第5个到最开始,每3个取一个
- s = 'Python最NB'
- # 获取s字符串中前3个内容
- print(s[0:2])
- # 获取s字符串中后3个内容
- print(s[6:9])
- # 获取s字符串中第3个到第8个
- print(s[2:8])
- # 获取s字符串中第2个到最后一个
- print(s[2:])
- # 获取s字符串中第1,3,5个内容
- print(s[0:6:2])
- # 获取s字符串中第2,4,6个内容
- print(s[1:7:2])
- # 获取s字符串中所有内容
- print(s[:])
- # 获取s字符串中第4个到最后一个,每2个取一个
- print(s[3::2])
- # 获取s字符串中倒数第5个到最开始,每3个取一个
- print(s[-5::-3])
答案
练习2
- 判断⼀句话是否是回⽂. 回⽂: 正着念和反着念是⼀样的. 例如, 上海⾃来⽔来⾃海上
练习3
- 有字符串s = "123a4b5c"
- 通过对s切片形成新的字符串s1,s1 = "123"
- 通过对s切片形成新的字符串s2,s2 = "a4b"
- 通过对s切片形成新的字符串s3,s3 = "1345"
- 通过对s切片形成字符串s4,s4 = "2ab"
- 通过对s切片形成字符串s5,s5 = "c"
- 通过对s切片形成字符串s6,s6 = "ba2"
字符串方法详解
全部大写
- name = 'alex'
- new_name = name.upper()
- print(new_name)
- # 把这个字符串全部变成大写
全部小写
- name = 'ALEX'
- new_name = name.lower()
- print(new_name)
- # 把这个字符串全部变成小写
应用场景:
- # 字符串大小写做验证码
- y_z_m = 'O98k'
- y_z_m_input = input("请输入验证码(O98k)")
- user = input('请输入账号:')
- pwd = input('请输入密码:')
- if y_z_m == y_z_m_input:
- if user == 'alex' and pwd == '8520':
- print('登陆成功!')
- else:
- print('登录失败')
- else:
- print('验证码错误!')
练习
- 将 name 变量对应的值全部变成大写,并输出结果
- 将 name 变量对应的值全部变成小写,并输出结果
以什么开头
- name = 'alex'
- new_name = name.startswith('a')
- if new_name:
- print('是以a开头')
- # 判断这是不是字符串是不是以a开头的
以什么结尾
- name = 'alex'
- new_name = name.endswith('x')
- if new_name:
- print('是以x结尾')
- # 判断这是不是字符串是不是以x结尾的
统计出现的次数
- name = 'alexdasx'
- new_name = name.count('a')
- print(new_name)
- # 统计name这个字符串中a出现的次数
练习
- 判断 name 变量是否以 "al" 开头,并输出结果
- 判断name变量是否以"Nb"结尾,并输出结果
- 判断name变量对应的值字母"l"出现几次,并输出结果
字符串替换
- name = 'alexdasx'
- new_name = name.replace('sx','sb')
- print(new_name)
- # 替换字符串中的内容
去除头尾两边的空格
- name = ' alexdasx '
- new_name = name.strip()
- print(new_name)
- # 去除头尾俩遍的空格和换行符
分割
- name = 'alexdasx'
- new_name = name.split("x")
- print(new_name)
- #通过x将字符串name进行切割
字符串格式化
- name = 'alexdasx{}'
- new_name = name.format('说的对')
- print(new_name)
- # 字符串格式化
练习
- 将 name 变量对应的值中的 所有的"l" 替换为 "p",并输出结果
- 将name变量对应的值中的第一个"l"替换成"p",并输出结果
- 将 name 变量对应的值根据 所有的"l" 分割,并输出结果。
- 将name变量对应的值根据第一个"l"分割,并输出结果。
- 请输出 name 变量对应的值的第 2 个字符?
- 请输出 name 变量对应的值的前 3 个字符?
- 请输出 name 变量对应的值的后 2 个字符?
is系列
判断是不是十进制,返回的是布尔值
- name = 'alexdasx'
- new_name = name.isdecimal()
- print(new_name) # 判断是不是十进制,返回结果是布尔值
判断是不是数字和字母,返回的是布尔值
- name = 'alex7dasx'
- new_name = name.isalnum()
- print(new_name)
- # 判断是不是字母和数字,返回结果是布尔值
判断是不是纯字母及汉字,返回的是布尔值
- name = 'alexdasx'
- new_name = name.isalpha()
- print(new_name)
- # 判断是不是字母和汉字,返回结果是布尔值
练习
- 输⼊⼀个字符串,要求判断在这个字符串中⼤写字⺟,⼩写字⺟,数字, 共出现了多少次,并输出
基础数据补充的时候,给大家讲解
- 首字母大写
- name = 'alexdasx'
- new_name = name.capitalize()
- print(new_name)
- 查找下标
- name = 'alexdasx'
- new_name = name.find('e')
- print(new_name)
- # 通过元素查找下标,不存在就返回-1
- name = 'alexdasx'
- new_name = name.index('e')
- print(new_name)
- # 通过元素查找下标,不存在就报错
- 每个单词首字母大写
- name = 'alex_wusir'
- print(name.title())
- 内容填充
- name = 'alex_wusir'
- print(name.center(50))
- 大小写反转
- name = 'alex_wusir'
- print(name.swapcase())
获取长度
目前我们写的内容还比较少,如果有一个很长很长的字符串,如果要是一个一个数是不是很累呢,Python给咱们提供了一个方法就是获取长度的.
长度获取示例:
- name = "Meet"
- print(len(name))
- 结果:
- 4
我们现在能够轻松的获取到到长度,现在我有这么一个字符串 name = "Meet",请使用while循环获取到字符串中每个元素并打印,效果图入下:
- name = "Meet"
- count = 0
- while count < len(name):
- print(name[count])
- count = count + 1
以上这个写法是没有问题的,你们来看这个会不会简单些
- name = "Meet"
- for i in name:
- print(i)
上边的这个东西叫做for循环, for是关键字 i是一个变量 后边的name是要被循环的内容,他会把这个name指向的字符串里的每个元素打印出来
for循环是可以循环的数据结构:
- 字符串(str)
- 列 表(list)
- 元 祖(tuple)
- 字 典(dict)
- 集 合(set)
唯独不能进行循环的就是 整型(int)和布尔值(bool)
万恶之源 - Python基础数据类型一的更多相关文章
- 万恶之源 - Python基础数据类型三
字典 字典的简单介绍 字典(dict)是python中唯⼀的⼀个映射类型.他是以{ }括起来的键值对组成. 在dict中key是 唯⼀的.在保存的时候, 根据key来计算出⼀个内存地址. 然后将key ...
- 万恶之源 - Python基础
Python简介 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程 ...
- 万恶之源-python基本数据类型
万恶之源-基本数据类型(dict) 本节主要内容: 字典的简单介绍 字典增删改查和其他操作 3. 字典的嵌套 ⼀一. 字典的简单介绍 字典(dict)是python中唯⼀一的⼀一个映射类型.他是以{ ...
- 万恶之源 - Python基础知识补充
编码转换 编码回顾: 1. ASCII : 最早的编码. ⾥⾯有英⽂⼤写字⺟, ⼩写字⺟, 数字, ⼀些特殊字符. 没有中⽂, 8个01代码, 8个bit, 1个byte 2. GBK: 中⽂国标码, ...
- Python基础数据类型-列表(list)和元组(tuple)和集合(set)
Python基础数据类型-列表(list)和元组(tuple)和集合(set) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客使用的是Python3.6版本,以及以后分享的 ...
- Python基础数据类型题
Python基础数据类型 题考试时间:三个小时 满分100分(80分以上包含80分及格)1,简述变量命名规范(3分) 1.必须是字母,数字,下划线的任意组合. 2.不能是数字开头 3.不能是pytho ...
- Python 入门之Python基础数据类型及其方法
Python 入门之Python基础数据类型 1. 整型:int 用于计算,用于比较 (在赋值的时候先执行等号右边的内容) 1.1 整数的加 a = 10 b = 20 print(a + b) 结果 ...
- Python基础数据类型-字符串(string)
Python基础数据类型-字符串(string) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客使用的是Python3.6版本,以及以后分享的每一篇都是Python3.x版 ...
- python基础数据类型考试题
Python基础数据类型考试题 考试时间:两个半小时 满分100分(80分以上包含80分及格) 一,基础题. 1,简述变量命名规范(3分) 2,字节和位的关系 ...
随机推荐
- c++学习笔记—二叉树基本操作的实现
用c++语言实现的二叉树基本操作,包括二叉树的创建.二叉树的遍历(包括前序.中序.后序递归和非递归算法).求二叉树高度,计数叶子节点数.计数度为1的节点数等基本操作. IDE:vs2013 具体实现代 ...
- 原创:超简单!windows配置NDK开发环境使用JNI
前段时间看android版的opencv的配置教程时,看到了它的NDK配置方法,感觉简单又不会出错!!! 1.下载NDK,设置NDK路径: 在windows的系统环境变量中添加NDK的路径,环境变量名 ...
- apache使某目录下的文件能够列表显示出来
想要使web目录下,某目录下的文件列表显示而不是显示"You don't have permission to access / on this server" 需要在httpd. ...
- jquery.flot.js简介
JQuery图表插件之Flot Flot是一个Jquery下图表插件,具有简单使用,交互效果,具有吸引力外观特点.目前支持 Internet Explorer 6+, Chrome, Firefox ...
- JSON类库 Flexjson学习
官方地址(需FQ):http://flexjson.sourceforge.net/ Flexjson 是一个将 Java 对象转成 JSON 的 类库,是一个深度转换的过程. 下面是我写的一个例子: ...
- sencha touch 模仿tabpanel导航栏TabBar(2013-11-7)
基于sencha touch 2.2所写 代码: /* *模仿tabpanel导航栏 */ Ext.define('ux.TabBar', { alternateClassName: 'tabBar' ...
- sencha touch 2.2.1 自定义彩色图标按钮(button+ico)
sencha touch 2.2.1 这个版本使用了新的按钮模式,不过他只提供了少部分的按钮样式.我们可以加一些自定义的ico样式 新加ico样式lower .x-button .x-button-i ...
- Linux系统启动内幕
经过对Linux系统有了一定了解和熟悉后,想对其更深层次的东西做进一步探究.这当中就包括系统的启动流程.文件系统的组成结构.基于动态库和静态库的程序在执行时的异同.协议栈的架构和原理.驱动程序的机制等 ...
- Unity3D笔记 愤怒的小鸟<四> 实现Selelction界面
一直跟着龚老师用js写,VS智能感应用习惯后发现这里用js对初学者比较蛋疼,MONO有提示但是还是无法和VS媲美就目前来看.所以这次还是换成熟悉的VS来开发. 目标:实现关卡页面 跑起来的效果如下: ...
- SOA架构商城二 框架搭建
1.创建父工程 创建Maven工程pingyougou-parent,选择packaging类型为pom ,在pom.xml文件中添加锁定版本信息dependencyManagement与plugin ...