Python基本数据类型之字符串、数字、布尔
一、数据类型种类
Python中基本数据类型主要有以下几类:
- Number(数字)
- String(字符串)
- Bool (布尔)
- List(列表)
- Tuple(元组)
- Sets(集合)
- Dictionary(字典)
由于内容较多,今天就暂时只说 数字,字符串和布尔三种基本类型,其余的下一篇文章再叙述。
二、 基本数据类型--数字
<1> int(整型)
Windows系统中,在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647;
在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
<2> long(长整型)
跟C语言不同,Python的长整型没有指定位宽,即:Python没有限制长整型数值的大小,但实际上由于机器内存有限,
我们使用的长整型数值也不可能无限大。从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,
所以现在长整型数据后面不加字母L也没事。
尤其是在Python3里没有long类型了,不论数据大小统一都是int类型。
例如:
a = 2**64 # <class 'int'>
b = 2**32 # <class 'int'>
print(type(a),type(b)) # type()方法可查看 数据类型 <3> float(浮点型)
float类型和其它语言的float基本一致,浮点数,就是带小数点的数,精度与机器相关。Python 3.x对于浮点数默认的是提供17位数字的精度。
<4> complex (复数)
Python支持复数,复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。 常用运算:
>>>5 + 4 # 加法
9
>>> 4.3 - 2 # 减法
2.3
>>> 3 * 7 # 乘法
21
>>> 2 / 4 # 除法,得到一个浮点数
0.5
>>> 2 // 4 # 除法(也叫地板除),得到一个整数
0
>>> 17 % 3 # 取余
2
>>> 2 ** 5 # 乘方
32
还需要注意的几点:
- 1、Python可以同时为多个变量赋值,如a, b = 1, 2。
- 2、一个变量可以通过赋值指向不同类型的对象。
- 3、数值的除法(/)总是返回一个浮点数,要获取整数使用//操作符。
- 4、在混合计算时,Python会把整型转换成为浮点数。
三、 基本数据类型--字符串
1、注意:在Python中,加了引号的字符都被认为是字符串!
例如:
name = 'cc' # 单引号
age = "21" # 双引号,加了引号就是字符串
info = ‘’‘ Hello everyone, my name is Tom''' # 3个引号也可以
单引号、双引号、多引号有什么区别呢?
单双引号木有任何区别,只有下面这种情况 你需要考虑单双的配合。
例如:
info = " He's 21 years old " # 引号嵌套需要区分
多引号又是什么作用呢?
例如:
msg = '''
生命诚可贵,
爱情价更高。
若为自由故,
二者皆可抛。
'''
print(msg)
像这个例子,多行字符串必须用多引号。
Python 使用反斜杠(\)转义特殊字符,如果你不想让反斜杠发生转义,可以在字符串前面添加一个 r,表示原始字符串:
>>> print('Hi\Bob')
Hi
Bob >>> print(r'Jack\Alice')
Jack\Alice
>>>
另外,反斜杠(\)可以作为续行符,表示下一行是上一行的延续。
注意,Python 没有单独的字符类型,一个字符就是长度为1的字符串。
Python中的字符串有两种索引方式,从左往右以0开始,从右往左以-1开始。
Python中的字符串不能被改变。
2、字符串拼接
字符串只能进行"相加"和"相乘"运算。需要注意,字符串的拼接只能是双方都是字符串,不能跟数字或其它类型拼接
name = 'cc'
age = '' s1 = name + age # 相加其实就是简单拼接
print(s1) #' cc21'
s2 = name*3 # #相乘其实就是复制自己多少次,再拼接在一起
print(s2) # cccccc
3、字符串常用方法(较多,以代码展示)
#!/usr/bin/env python3
#!-*- coding:utf-8 -*-
# write by congcong s = 'Hello World!'
print(s.capitalize()) # 首字母大写,输出:Hello world!
print(s.count('l'),s.count('o',0,6)) #统计指定元素出现的次数,输出:3 1
print(s.center(30,'-')) # 字符串居中后,其余位置用指定元素替代 print(s.endswith('!')) # 判断字符串以什么结尾,输出:True s1 = 'a\tb'
print(s1) #\t默认输出空4格,输出:a b
print(s1.expandtabs(),s1.expandtabs(20))#扩展输出到空8格,20格,输出:a b a b print(s.find('W'),s.find('w'))#查找指定的元素,并返回其索引值,当没有找到时,返回负数。输出:6 -1
print(s.find('o',0,6),s.find('o',0,10))# 可以指定索引范围内查找,当找到多个时返回第一个索引值,输出:4 4 s2 = "My name is {0}, I'm {1} years old!"
print(s2.format('cc',21),id(s2)) # 格式化输出方法一,输出:My name is cc, I'm 21 years old! 1942924504296
s2 = "My name is {name},I'm {age} years old!"
print(s2.format(name='sc',age=21),id(s2)) # 格式化输出方法二,输出:My name is sc,I'm 21 years old! 1942924504384
'''两次s2的赋值,并非后一次对前一次的简单覆盖,而是重新分配内存,实质是引用的改变,查看两个s2的id可以验证''' print(s2.isdigit()) #判断字符串是否由数字组成 ,此处输出:False
s2 = ''# 赋值12时会报错AttributeError: 'int' object has no attribute 'isdigit'(属性错误:“int”对象没有属性“isdigit” )
s3 = '12.5'
print(s2.isdigit(),s3.isdigit()) #输出:True False
print(s2.isdecimal(),s3.isdecimal()) #输出:True False,作用与isdigit相同
print(s2.isnumeric(),s3.isnumeric()) #输出:True False,作用与isdigit相同 s3 = 'Hello everyone , my name is cc,I am 21 years old...'
print(s3.index('m',0,20)) #寻找指定元素的索引值并将其返回,不在搜索范围内会报错,输出:17
print(s3.find('my',0,20),s3.find('my',0,10)) #寻找指定元素的索引值并将其返回,不在搜索范围内不报错,会返回-1,输出:17 -1 print(s3.isalnum()) #判断字符串是否仅由数字和字母任意组合组成,此处输出:False
s3 = 'hgnc2017'
print(s3.isalnum()) #输出:True
s4 = 'HGNZ'
print(s4.isalpha(),s3.isalpha()) #判断字符串是否仅由字母组成,输出:True False print(s3.isidentifier()) #判断字符串是否是合法的变量
s3 = '2018_welcome'
print(s3.isidentifier(),s4.isidentifier()) #输出:False True print(s3.islower(),s4.islower()) #判断字符串中字母是否小写 ,输出:True False
print(s3.isprintable()) #判断是否可打印(Linux中较常用,一切东西皆文件,但仅文本文件可打印),输出:True
s4 = 'Hgsf Jyjsx'
print(s3.istitle(),s4.istitle()) #判断是否为标题格式,输出;False True
s5 = 'HGSF JYJSX'
print(s4.isupper(),s5.isupper()) #判断是否都是大写,输出:False True
s5 = ' '
print(s4.isspace(),s5.isspace()) #判断是否都是空格,输出:False True names = ['cc','fm','zl']
n = ' , '.join(names) # 将列表拆成字符串,并规定以何种方式连接
print(n,' - '.join(names)) # 输出:cc , fm , zl cc - fm - zl
print(s4.ljust(20,'-')) #将字符串凑成指定的长度输出,从左开始数,右边不足的部分可以为空或指定元素凑齐,输出:Hgsf Jyjsx----------
print(len(s4.ljust(20,'-'))) #输出:20
print(s4.rjust(20,'*')) #将字符串凑成指定的长度输出,从右开始数,左边不足的部分可以为空或指定元素凑齐,输出:**********Hgsf Jyjsx s5 = 'lu fei xue cheng'
print(s5.upper()) # 以大写输出,输出:LU FEI XUE CHENG
s5 = 'Lu Fei'
print(s5.lower()) # 以小写输出, 输出:lu fei
s5 = ' \n\t congcong\n\t '
print(s5) #输出: congcong
print(s5.strip()) # 除去\n\t和两侧的空格,输出:congcong
s6 = " \ncongcong \n "
print(s6.lstrip()) #只去除字符串左侧的空格和换行
print(s6.rstrip()) #只去除字符串右侧的空格和换行 str_in = 'a m c o n g I'
str_out = '0 1 2 3 4 5 6'
print(str.maketrans(str_in,str_out)) # maketrans创建字符映射的转换表
table = str.maketrans(str_in,str_out)#转换表:{97: 48, 32: 32, 109: 49, 99: 50, 111: 51, 110: 52, 103: 53, 73: 54}
str_input = 'I am congcong'
print(str_input.translate(table))#按映射表进行转换字符串,输出:6 01 23452345 s1 = 'one or two'
print(s1.partition('or')) #按指定的字符进行划分,输出:('one ', 'or', ' two') print(s1.replace('or','and'))# 用指定的后一个元素替换前一个元素,输出:one and two
print(s1.replace('o','p',2))# 替换指定的数量,输出:pne pr two print(s1.rfind('o'))# 有多个时,首先返回最右侧的那个,输出:9
print(s1.rindex('o'))# 同rfind类似,但没找时会报错,输出:9
s2 = 'one and three'
print(s1.rpartition('o'),s2.rpartition('n')) #当用于指定划分的元素有多个时,选择最右侧的那个作为划分依据,输出:('one or tw', 'o', '') ('one a', 'n', 'd three') print(s2.split())# 将字符串变为列表,默认以空格划分,输出:['one', 'and', 'three']
print(s2.split('n'))# 还可任意指定字符划分,但指定的字符会消失,输出:['o', 'e a', 'd three']
print(s2.rsplit('n',1)) #从右侧分,只分一次。输出:['one a', 'd three']
s3 = '\nqwert\nasdf\nzxcv\n'
print(s3.splitlines())# 以换行作为划分依据,输出:['', 'qwert', 'asdf', 'zxcv']
print(s2.startswith('a',4,9)) #判断是否以指定的元素作为开头,可以指定起点和终点
s4 = 'HELLO WORLD!'
print(s2.swapcase(),s4.swapcase())# 大写转小写,小写转大写,输出:ONE AND THREE hello world! print(s4.title())#将字符串以标题形式输出,输出:Hello World! print(s4.zfill(30)) #输出指定长度的字符串,长度不够的部分以0填充,输出:000000000000000000HELLO WORLD! '''
最常用方法(必须掌握):
isdigit 判断是否为整数
replace 替换指定的字符,可指定范围
find 查找指定的元素,若没有,返回-1
count 统计字符串中指定的字符数量
strip 脱去字符串两侧的换行和空格
center 在指定的范围长度内使指定的字符串居中,不足的部分用指定的元素填充
split 将字符串转成列表,默认是以空格划分,指定划分元素时,划分元素消失
format 格式化字符串
join 用指定的元素来连接字符串中的各个字符 '''
四、基本数据类型--布尔(bool)
布尔类型很简单,就两个值 ,一个True(真),一个False(假), 主要用于逻辑判断。如下例所示:
a = 3
b = 5
print(bool(a>b)) # False
print(bool(a<b)) # True
友情提示:未完待续,下一篇继续学习Python基本数据类型里的列表,元组,字典,集合
Python基本数据类型之字符串、数字、布尔的更多相关文章
- python基本数据类型之字符串(五)
python基本数据类型之字符串(五) 遍历与查找 python中的字符串属于可迭代对象,通过一些方法可以遍历字符串中的每一个字符.而查找的方法主要有两个:find与index. 1.字符串的遍历 字 ...
- python基本数据类型之字符串(四)
python基本数据类型之字符串(四) 判断方法 python中有一类用来判断字符串形式的方法,该类方法有两个特点:(1)方法名都是is开头(除了startswith和endswith):(2)返回值 ...
- Python基础数据类型之字符串
Python基础数据类型之字符串 一.Python如何创建字符串 在python中用引号将一些文本包起来就构成了字符串(引号可以是单引号.双引号.单三引号,双三引号,它们是完全相同的) >> ...
- python基本数据类型之字符串(三)
python基本数据类型之字符串(三) 转换和判断方法 在python中,有一些内置方法可以将字符串转化特定形式,而与之对应的一些方法可以判断字符串是否符合某些形式.因此,在这篇文章中,笔者把转换方法 ...
- python基本数据类型之字符串(二)
python基本数据类型之字符串(二) 替换方法 python中字符串的替换方法主要有:center.rjust\ljust.expandtabs.format\format_map(格式化).str ...
- python自学笔记(二)python基本数据类型之字符串处理
一.数据类型的组成分3部分:身份.类型.值 身份:id方法来看它的唯一标识符,内存地址靠这个查看 类型:type方法查看 值:数据项 二.常用基本数据类型 int 整型 boolean 布尔型 str ...
- Python基本数据类型之整型和布尔型
整型和布尔型 获取对象的数据类型 1.type() 2.dir() 3.help() 4.在pycharm里面的操作 数字类型 int 创建: int() 接收数字字符串 .bit_lenght() ...
- Python基础 数据类型 (字符串、列表、字典、元组、集合、堆、栈、树)
数据类型有整型.布尔.字符串.列表.字典.元组.集合.堆.栈和树. 1.整型: 整型就是数字 数字表示 python2 64位机器,范围-2^63~2^63-1 超出上述范围,python自动转化为l ...
- Python基本数据类型以及字符串
基本数据类型 数字 int ,所有的功能,都放在int里 a1 = 123 a1 = 456 ...
随机推荐
- 如何在JM8.6编码端提取QDCT?
毫无疑问,编码端的QDCT和解码端的QDCT完全相同,下面从编码端提取QDCT. 为简便起见,仅提取第一帧第一个宏块第一个4*4块的QDCT.JM8.6编码器最核心的编码函数是encode_one_m ...
- ng 双向数据绑定
1.方向1:model->View模型数据绑定到视图 绑定的方式:①双花括号 ②常见的ng指令(ngRepeat ngIf ngShow....) 效果:数据一旦绑定到视图上,随着数据的修改,视 ...
- HohoCoder 1184 : 连通性二·边的双连通分量(+原理证明)
1184 : 连通性二·边的双连通分量 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在基本的网络搭建完成后,学校为了方便管理还需要对所有的服务器进行编组,网络所的老师 ...
- docker -ce(社区免费版)
Docker -ce https://www.cnblogs.com/zhangxiaoyong/p/9706392.html Docker 是世界领先的软件容器平台.开发人员利用 Docker 可以 ...
- Auto Layout简单应用——以编码的方式实现Auto Layout自动布局(二)
在上一篇文章iOS学习笔记02——以编码的方式实现Auto Layout自动布局(一)中我们简单的介绍了使用Visual Format Language创建布局约束来实现自动布局,这种方法创建的布局约 ...
- Java JDK安装和配置(Windows)
安装和配置JDK JDK中自带了JRE,不需要单独下载, 打开JDK安装, 选择安装目录,下一步,装完JDK,会问是否安装JRE,选下一步, 最后还会问是否安装Java FX, 装完后就全部完成了JD ...
- WCF日志跟踪SvcTraceViewer.exe
参考: https://msdn.microsoft.com/zh-cn/library/ms732023.aspx https://msdn.microsoft.com/zh-cn/library/ ...
- 初识用.NET Remoting来开发分布式应用
一..NET Remoting简介: .NET Remoting从某种意义上讲是DCOM的替代品.ASP.NET Web服务十分有用,但是这项技术在企业内联网的解决方案中,对于某些业务请求来说并不快, ...
- Data_Structure-绪论作业
一.作业题目 仿照三元组或复数的抽象数据类型写出有理数抽象数据类型的描述 (有理数是其分子.分母均为整数且分母不为零的分数). 有理数基本运算: 构造有理数T,元素e1,e2分别被赋以分子.分母值 销 ...
- 蓝桥杯 基础练习 BASIC-30 阶乘计算
基础练习 阶乘计算 时间限制:1.0s 内存限制:512.0MB 问题描述 输入一个正整数n,输出n!的值. 其中n!=1*2*3*…*n. 算法描述 n!可能很大,而计算机能表示的整数范围有 ...