python | python基本数据类型----数字,字符串

目录

 

python数字

1.整型

数字进制及进制转换

数值运算

2.浮点型

float与decimal

3.复数

字符串string

常见转义字符

字符串基本操作

1.字符串取值

2.字符串级连

3.字符串的运算

4.字符串的转换

5.Python字符串常用方法

6.Python字符串拼接

7.字符串格式化


python数字

python数字有三种类型:整型,浮点型,复数

内置的 type() 函数可以用来查询变量所指的对象类型。

1.整型

python2   vs  python3
python2整型分为:长整型(long)和整型
python3只有整型

>>> a, b, c, d = 20, 5.5, True, 4+3j
>>> print(type(a), type(b), type(c), type(d))
<class 'int'> <class 'float'> <class 'bool'> <class 'complex'>

此外还可以用 isinstance 来判断:

>>> a = 111
>>> isinstance(a, int)
True
>>>

isinstance 和 type 的区别在于:

  • type()不会认为子类是一种父类类型。
  • isinstance()会认为子类是一种父类类型。

注意:Python3 中,bool 是 int 的子类,True 和 False 可以和数字相加, True==1、False==0 会返回 True,但可以通过 is 来判断类型。

>>> issubclass(bool, int) 
True
>>> True==1
True
>>> False==0
True
>>> True+1
2
>>> False+1
1
>>> 1 is True
False
>>> 0 is False
False

在 Python2 中是没有布尔型的,它用数字 0 表示 False,用 1 表示 True。

数字进制及进制转换

 

进制转换-bin:任意进制转2进制, 接收一个int, 返回一个str

>>> bin(10)
'0b1010'
>>> bin(0b11111)
'0b11111'
>>> type(bin(10))
<class 'str'>
>>> bin(0o34)
'0b11100'

进制转换-oct: 任意进制转8进制, 接收一个int, 返回一个str

>>> oct(54)
'0o66'
>>> oct(0b11111)
'0o37'
>>> type(0b11111)
<class 'int'>

进制转换-hex: 任意进制转16进制, 接收一个int, 返回一个str

>>> hex(54)
'0x36'
>>> hex(0o54)
'0x2c'
>>> type(hex(0o54))
<class 'str'>

进制转换-int: 任意进制转10进制, 接收一个int/str, 返回一个int

>>> int(0b11)
3
>>> type(int(0b11))
<class 'int'>
>>> int('1111')
1111
>>> int('0b11',base=2)   #base=2说明输入的字符串为二进制
3

数值运算

>>> 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会把整型转换成为浮点数。

2.浮点型

浮点数数据类型,可以简称为浮点类型。

小数通常以浮点数的形式存储,在 Python 中用 float 表示。

可以理解为浮点数是用来描述小数的。

float与decimal

float是不精确的,float型只能保留小数点后16位

>>> i=1
>>> i=i-0.1
>>> i
0.9
>>> i=i-0.1
>>> i
0.8
>>> i=i-0.1
>>> i
0.7000000000000001

Decimal类型数据是精确的小数,可以传递给Decimal整型或者字符串参数

from decimal import Decimal
mydec = Decimal("3.22")
print(mydec, type(mydec))
mydec2 = Decimal(3.22)
print(mydec2)
3.22 <class 'decimal.Decimal'>
3.220000000000000195399252334027551114559173583984375

3.复数

Python还支持复数,复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型

>>> a = -5 + 4j
>>> type(a)
<class 'complex'>

字符串string

Python中的字符串用单引号 ' 或双引号 "或使用三引号('''或”””) 括起来,同时使用反斜杠 \ 转义特殊字符。

a = "abc"  #定义字符串
print(a)

#r标志 是输出原始字符串,不转义
b = r"a\nb"
print(b)

print("a\\nb")
print("\ta\"b")
r标志 是输出原始字符串,不转义;raw功能的作用: 返回到原始(原生)的字符,即不使得转义字符,将字符原样输出, 让\t失去代表tab键的功能

常见转义字符

转义字符是一种特殊的字符常量。转义字符以反斜线"\"开头,后跟一个或几个字符。转义字符具 有特定的含义,不同于字符原有的意义,故称“转义”字符。

\(在行尾时)   续行符

\n 换行

\\ 反斜杠符号

\' 单引号

\t 横向制表符

\" 双引号

\r 回车

字符串基本操作

#字符串的不可变的序列
# 一旦创造了一个字符串,就不能再改变它。

1.字符串取值

  1. 下标取值法(注意:下标从0开始)
  2. 切片取值法
>>> a='abcdefghijklmn'   每个字符对应一个索引(下标),编号从0开始
        0123456789
>>> print(a[-8])        从右至左第八个
g
>>> a[5]           从左至右第五个
'f'
>>> a[3:6]          从左至右第3到6个,不包括第六个,左闭右开区间
'def'

#格式为a[start:end:step]    step默认为+1,step为正,从左至右切步长
#                                      step为负,从右至左切步长

>>> a[8:2:-2]
'ige'


#字符串切片索引
# str[start:end:step]
# str1='abcdefghijk'
# 1,确定步长为正还是负
#    为正 从左至右取值
#    为负  从右到左取值
# 2, 确定起始位置
#3,  确定步长

print(str1[-9:8:2]
print(str1[2:])   #end值为空,包含最后一个数
print(str1[:7])   #end值不为空,不包含最后一个数
print(str1[::-1])   #倒叙整个字符串

2.字符串级连

>>>str2 = "aa""bbb"
>>>print(str2)
'aabbb'

3.字符串的运算

>>>str3 = "hello,"
>>>str4 = "world!"
>>>print(str3 + str4)
>>>print(str3*3)
'hello,world!'
'hello,hello,hello,'

4.字符串的转换

>>>result = str(100)
>>>print(type(result), result)
<class 'str'> 100

5.Python字符串常用方法

1.判断系列

str.isdigit() 字符串中是否只包含数字

str.isnumeric() 字符串中是否只包含数字(包括中文一到九等)

str.isalnum() 字符串中是否只包含字母或数字

str.istitle() 字符串中是否每个单词首字母大写,其他字母小写

str.isalpha() 字符串中是否只包含字母(汉字会算作字母)

str.isupper() 字符串中是否全为大写

str.isidentifier() 字符串是否为合法标识符

str.isprintable() 字符串是否为可打印字符

str.islower() 字符串中是否全为小写

str.isspace() 字符串中是否只包含空格(tab也算空格)

str.startswith(prefix[, start[, end]]) 字符串是否以某字符串开始,可以通过start和stop参数设 置搜索范围

str.endswith(suffix[, start[, end]]) 字符串是否以某个字符串结束,可以通过start和stop参数 设置搜索范围

>>> str='abc123'
>>> str.isidentifier()
True
>>> str.isprintable()
True
>>> str.isspace()
False
>>> str.startswith('a',0,4)
True
>>> str.endswith('a',0,4)
False
>>> str.isdigit()
False
>>> str.isnumeric()
False
>>> str.isalnum()
True
>>> str.istitle()
False
>>> str.isalpha()
False
>>> str.islower()
True
>>> str.isupper()
False

2.查找统计类

len(string) 统计字符串长度

str.count(sub [,start [,end]]) 统计substring在字符串里出现次数

str.index(sub [,start [,end]]) 显示substring在字符串中第一次出现的下标位置,没有会报错

str.find(sub [,start [,end]]) 查找substring,找到返回其起始位置, 找不到返回-1

#查看某个字符出现了多少次
>>> 'helloworld'.count('l')
3

#统计字符串的长度
>>> len('klajfdla')
8

#查看某个字母第一次出现所在位置的下标
#如果没有就报错 ,报错会终止程序,不推荐使用
>>> 'ajfklas'.index('l')
4
>>> 'ajfklas'.index('g')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: substring not found
#find没有找到字母也不报错,推荐使用
>>> 'ajfklas'.find('g')
-1

3.字符串转换类(返回一个新对象)

str.upper() 将字符串转换为大写

str.lower() 将字符串转换为小写

str.title() 将字符串中的单词首字母大写,其他字母小写

str.split('sep') 指定'sep'作为分隔符将字符串切割成列表,分隔符可以是任意字符(默 认是空格)

'str'.join(list) 将列表用str拼接成一个大字符串

str.strip([string]) 去除字符串中首尾的字符串,不带参数默认去除空格

str.zfill(number) 返回指定长度的字符串,原字符串右对齐,前面填充0

str.replace('old', 'new'[, count]) 用新的字符替换老字符,还可以指定替换的个数,默认全部 替换 str.capitalize() 句子首字母大写

str.center(width[, fillchar]) ,str.ljust(width[, fillchar]) ,str.rjust(width[, fillchar]) 返回一个原字符串居中(靠左/靠右)对齐,width为总长度,两 边用一个字符fillchar填充,如果指定的长度小于原字符串的 长度则返回原字符串。

str.expandtabs(number) 将\t转换成number个空格

>>> str.upper()
'ABC123'
>>> str.lower()
'abc123'
>>> str.title()
'Abc123'
>>> str.split()
['abc123']
>>> str.split(' ')
['abc123']
>>> str.split('1')
['abc', '23']
>>> a=str.split('1')
>>> '1'.join(a)
'abc123'
>>> str.swapcase()
'ABC123'

6.Python字符串拼接

1.直接通过(+)操作符拼接:

使用这种方式进行字符串连接的操作效率低下,因为python中使用 + 拼接两个字符串时会生成一个新的字符串,生成新的字符串就需要重新申请内存,当拼接字符串较多时自然会影响效率。

2.通过str.join()方法拼接:

这种方式一般常使用在将集合转化为字符串,''''.join()其中''''可以是空字符,也可以是任意其他字符,当是任意其他字符时,集合中字符串会被该字符隔开

3.通过str.format()方法拼接

通过这种方式拼接字符串需要注意的是:字符串中{}的数量要和format方法参数数量一致否则会报错!

4.通过(%)操作符拼接

这种方式与str.format()使用方式基本一致

>>> a='字符串拼接1'
>>> b='字符串拼接2'

>>> print(a+b)
字符串拼接1字符串拼接2

>>> print("%s %s"%(a,b))
字符串拼接1 字符串拼接2

>>> print('{},{}'.format(a,b))
字符串拼接1,字符串拼接2

>>> print(f'{a},{b}')
字符串拼接1,字符串拼接2

>>> c=f'{a},{b}'
>>> c
'字符串拼接1,字符串拼接2'

7.字符串格式化

一、使用 % 符号来进行格式化

基本格式
%[(name)][flags][width].[precision]typecode
- (name):命名
- flags: +,-,' '或0。+表示正数的加号;-表示左对齐;' '为一个空格,表示在正数的左侧填充一个空
格,从而与负数对齐,0表示使用0填充。
- width表示显示宽度
- precision表示小数点后精度

-typecode表示数据类型%s    字符串 (采用str()的显示)

%r    字符串 (采用repr()的显示)

%c    单个字符

%b    二进制整数

%d    十进制整数

%i    十进制整数

%o    八进制整数

%x    十六进制整数

%e    指数 (基底写为e)

%E    指数 (基底写为E)

%f    浮点数

%F    浮点数,与上相同

%g    指数(e)或浮点数 (根据显示长度)

%G    指数(E)或浮点数 (根据显示长度)

%%    字符"%",显示百分号%

>>> print("第一个格式化:%10x"%(10))
第一个格式化:         a
>>> print("第二个格式化:%+x"%(10))
第二个格式化:+a
>>> print("第三个格式化:%06d"%(10))
第三个格式化:000010
>>> print("第四个格式化:%-6d"%(10))
第四个格式化:10    
>>> print("第五个格式化:%09.3f"%(3.245345))
第五个格式化:00003.245
>>> num1 = 0.34539203
>>> print("%.2f%%"%(num1*100))
34.54%
>>> 

二、使用.format的格式

基本使用格式 <模板字符串>.format(<逗号分隔的参数>)

 <模板字符串>内容:{变量:[填充字符][对齐方式 <^>][宽度][,(千分位格式化)][精度][格式]}


s = "PYTHON"
 
#填充默认为空格
"{0:30}".format(s)
Out[17]: 'PYTHON                        '
 
"{0:>30}".format(s)
Out[18]: '                        PYTHON'
 
"{0:*^30}".format(s)
Out[19]: '************PYTHON************'
 
"{0:-^30}".format(s)
Out[20]: '------------PYTHON------------'
 
#指当前槽的设定输出字符宽度,如果该槽对应的format()参数长度比<宽度>设定值大,则使用参数实际长度。
#如果该值的实际位数小于指定宽度,则位数将被默认以空格字符补充。
"{0:3}".format(s)
Out[21]: 'PYTHON'

#<格式控制标记>中逗号(,)用于显示数字的千位分隔符
"{0:-^20,}".format(1234567890)
Out[24]: '---1,234,567,890----'
 
"{0:-^20}".format(1234567890) #对比输出
Out[25]: '-----1234567890-----'
 
"{0:-^20,}".format(12345.67890)
Out[26]: '----12,345.6789-----'

#对于浮点数,精度表示小数部分输出的有效位数。对于字符串,精度表示输出的最大长度。

"{0:.2f}".format(12345.67890)
Out[29]: '12345.68'
 
"{0:H^20.3f}".format(12345.67890)
Out[30]: 'HHHHH12345.679HHHHHH'
 
"{0:.4}".format("PYTHON")
Out[31]: 'PYTH'


 三、f-string来格式化字符串——python3.6以上

例如:

#只有python3支持  python2不支持这种写法
name = "sc"
age = 4
result = f"my name is {name}, my age is {age:*>10}"
print(result)

 结果如下:

my name is sc, my age is *********4

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值