详解Python数据类型、进制转换、字符串格式化的问题
作者:这个手刹不太灵儿 发布时间:2022-11-11 16:24:10
1. 整数、浮点数和复数
Python2中区分整型int、长整型long
Python3中只有统称为 整型int
浮点数
即带有小数点的数字,因为浮点数用二进制表示的,小数部分有时是无法表示的。是不精确的
float组成: 由整数位,小数点,小数位组成,也可以用科学计数法表示
Decimal
是精确的
from decimal import Decimal #从decimal 包导入Decimal 类
mydec = Decimal("3.22") #将字符串转换成decimal类型
print(mydec, type(mydec))
mydec2 = Decimal(3.22) #浮点型3.22 是不精确的,转换成decimal就是精确的
print(mydec2, type(mydec))
结果:3.22 <class 'decimal.Decimal'>
3.220000000000000195399252334027551114559173583984375 <class 'decimal.Decimal'>
复数
dir(a) 查看属性
a.imag 获取虚部,无论定义的时候是整型还是浮点型最终都会转换成浮点型
a.real 获取实部
>>> a = 4 + 5j
>>> a.imag
5.0
>>> a.real
4.0
2.进制转换
进制数字类型
二进制、八进制、十六进制都是整型
>>> a=0b11 二进制 binary
>>> type(a)
<class 'int'>
>>> b=0o11 八进制 octonary
>>> type(b)
<class 'int'>
>>> c=0x11 十六制 hexadecimal
>>> type(c)
<class 'int'>
整型进制操作
整型转换成2、8、16进制,得到的值是字符串类型
>>> num = 100
>>> bin(num) 整型转换成二进制,()里面只能是整型
任意进制转2进制, 接收一个int, 返回一个str
'0b1100100'
>>> oct(num) 任意进制转8进制, 接收一个int, 返回一个str
'0o144'
>>> hex(num) 任意进制转16进制, 接收一个int, 返回一个str
'0x64'
>>> int (0o11) 接收整型
9
>>> int("0o11",base=8) 接收整型,但要指定几进制
9
>>> int("11") 接收整型,可以不指定,因为它是一个数字
11
3. 字符串
3.1 转义字符
r标志:是输出原始字符串,不转义
3.2 字符串取值
下标取值法
从左0123456
从右-1 -2 -3 -4 -5
>>> a = 'abcdefghijklmnopq'
>>> a[0]
'a'
>>> a[-8]
'j'
切片取值法
str[start:end:step] 左闭右开
step 为正数 从左至右
step 为负数 从右至左
str[2:] 从左至右 第三个数开始
str[:7] 从左至右到第七位
str[::-1] 从右至左 步长为1
str[4::-2] 从第五个数开始从右至左 步长为2
>>> a = 'abcdefghijklmnopq' 一旦定义不可改变
>>> a[2:5]
'cde'
4. 字符串运算与转换
>>> str1="qqq"
>>> str2 = "lll"
>>> str1+str2 # 字符串拼接
'qqqlll'
>>> str3="abc"
>>> str3*3
'abcabcabc'字符串复制
>>> result = str(100) # int转换成字符串
>>> type(result)
<class 'str'>
>>> result
'100'
5. 字符串的常用方法
判断系列
演示:
>>> str7= "helloabc xx zz"
>>> str7.startswith("abc")
False
>>> str7.startswith("abc",5)
True
>>> str7.startswith("abc",5,7)
False
>>> str7.startswith("abc",5,8)
True
查找统计系列
len不是字符串的属性方法,不能通过.len的方式去计算长度
字符串转换类
>>> str7
'helloabc xx zz'
>>> str7.upper() 转大写
'HELLOABC XX ZZ'
>>> str7.title() 转标题格式
'Helloabc Xx Zz'
>>> str9 = str7.title().swapcase() 大小写互换
>>> str9
'hELLOABC xX zZ'
>>> str9 = "a b c d e f"
>>> str9.split() 默认按空格切割
['a', 'b', 'c', 'd', 'e', 'f']
>>> str10 = "a#b#c#d#e#f#g#h"
>>> str10.split("#")
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
>>> str11 = str10.split("#")
>>> str11
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
>>> "*".join(str11)
'a*b*c*d*e*f*g*h'
+和join的效率问题
+ 拼接效率比join低。+拼接,每一次出现都会在内存中开辟一个新的空间,所以效率低
6 . 字符串格式化
%格式化
语法格式:%[(name)][flags][width].[precision]typecode
(name):命名
flags: +,-,’ '或0。
+表示右对齐;-表示左对齐;
’ '为一个空格,表示在正数的左侧填充一个空格,从而与负数对齐,0表示使用0填充。
width表示显示宽度
precision表示小数点后精度
%s 一个萝卜一个坑,一一对应,不能多也不能少
演示:
结果
format格式化
num1 = 0.1416926 #转换成百分位
print("%.2f%% " % (num1 * 100))
f格式化
python2不支持这种写法
print(f"my name is {name},my age is {age}")
结果:my name is sc,my age is 4
print(f"my name is {name},my age is {age:*>10}")
结果:my name is sc,my age is *********4
练习
字符串的拼接方式
请计算出新拼接出来的字符串长度,并取出其中的第七个字符。
a = "字符串拼接1"
b = "字符串拼接2"
print("方式1:" + a + b)
print("方式2:%s%s" % (a, b))
print(f"方式3:{a}{b}")
print("方式4:{0}{1}".format(a, b))
c = a + b
print("新拼接的字符串长度为:", len(c))
print("第七个字符为:", c[6])
str1 = "8*y*cali*china**it*soft*linux*python"
count = str1.count("*")
list = str1.split("*")
str2 = "".join(list)
print("*" * count + str2)
将字符串"8ycalichina**itsoftlinuxpython"里的所有的*
号抽
取出来放到最前面,里面的字符串保持顺序不变
str1 = "8*y*cali*china**it*soft*linux*python"
count = str1.count("*")
list = str1.split("*")
str2 = "".join(list)
print("*" * count + str2)
7. 字符串拼接
print(“%s %s”%(str1,str2))
>>> str1 = "你好"
>>> str2 = "hejin"
>>> str1+str2 #方式1:加号拼接
'你好hejin'
>>> "".join([str1,str2]) #方式2:join拼接
'你好hejin'
>>> print("%s,%s"%(str1,str2)) #方式3:% 占位符
你好,hejin
>>> "{},{}".format(str1,str2) #方式4:format()
'你好,hejin'
>>> "{0},{1}".format(str1,str2) # 方式5
'你好,hejin'
>>> "{1},{0}".format(str1,str2)
'hejin,你好'
>>> "{a},{b}".format(a=str1,b=str2) # 方式6
'你好,hejin'
>>> "{b},{a}".format(a=str1,b=str2)
'hejin,你好'
>>> f"{str1},{str2}" # 方式7:f格式化
'你好,hejin'
练习:猜谁是小偷
嫌疑人A、B、C、D的笔录如下,其中三人为真,一人为假:
a:我不是小偷
b:C是小偷
c:小偷肯定是D
d:小偷肯定是D
lst = ["a", "b", "c", "d"]
for x in lst:
if ("a" != x) + ("c" == x) + ("d" == x) + ("d" != x) == 3:
print(f"{x}是小偷")
来源:https://blog.csdn.net/qq_40887651/article/details/120886633


猜你喜欢
- 在html里的每一个标签都有其自身的意义,而H标签作为标题标签,它的意义更是至关重要。对于H标签的用法特别是h1的用法一直是个争议的问题,也
- python 利用pywifi模块实现连接网络破解wifi密码实时监控网络,具体内容如下:import pywififrom pywifi
- 这个微信版网页版虽然繁琐,但是不是很难,全程不带加密的。有兴趣的可以试着玩一玩,如果有兴趣的话,可以完善一下,做一些比较有意思的东西。开发环
- 文章简介本文介绍一种 Golang 程序在运行时加载 C 动态库的技术,跳过了 Golang 项目编译阶段需要链接 C 动态库的过程,提高了
- 先看下jupyter和pycharm环境的差别左边是jupyter-------------------------------------
- 1.MTV开发模式介绍M:Models 模型(数据)与数据组织相关的功能。组织和存储数据的方法和模式,与数据模型相关的操作。T:Templa
- Numba是Python的即时编译器,在使用NumPy数组和函数以及循环的代码上效果最佳。使用Numba的最常见方法是通过其装饰器集合,这些
- api文档 https://sms-activate.org/cn/api2要使用SMSActivateAPI库从sms-activate.
- 当在一个分支的开发工作未完成,却又要切换到另外一个分支进行开发的时候,除了commit原分支的代码改动的方法外,我觉得git st
- slice 可以用来获取数组片段,它返回新数组,不会修改原数组。除了正常用法,slice 经常用来将 array-like 对象转换为 tr
- 错误日志安装时出现了如下错误:SQL Server 2005 安装错误码29503。产品: Microsoft SQL Server 200
- 黑体是视觉设计师常用的一款字体,特别是针对广告的 Banner 等。根据 * 的相关介绍,有关黑体的定义可以认为:黑體与白体
- 前言实现一个帧动画,使用的一个图,根据不同的时间显示不同的图。使用的就是如下所示的一张图,宽度780 * 300 ,使用加载图片 260 *
- 先来看一个老掉牙的故事:福特说,我在设计汽车之前,到处去问人们“需要一个什么样的更好的交通工具?”,几乎所有人的答案都是 ── 一匹“更快的
- 原理1.使用python中的mtplotlib库。2.立体爱心面公式点画法(实心)代码import matplotlib.pyplot as
- 1、sqldmo SQLDMO是操作SQLServer的理想的方式,如果您的数据库是SQLServer就可以考虑使用这种方式。在C#中使用S
- 本文实例讲述了Python实现简单状态框架的方法。分享给大家供大家参考。具体分析如下:这里使用Python实现一个简单的状态框架,代码需要在
- 第一步:字母转数字英文字母转对应数字相对简单,可以在命令行输入一行需要转换的英文字母,然后对每一个字母在整个字母表中匹配,并返回相应的位数,
- 一、概念我们可以将工作池理解为线程池。线程池的创建和销毁非常消耗资源,所以专门写一个pool,每次用过的线程池再放回pool中而不是销毁。不
- IE的特殊性 IE的DOM元素属性与Firefox, Opera, Safari有些不同。在IE中,我们可以给DOM添加任意自定