007.Python基础数据类型之数字与字符串
文章目录
- (一)基本使用
- 1.用途:
- 2.定义方式:
- 3.常用的操作及其内置方法
- (1)优先掌握的操作
- ①按照索引取值:
- ②切片:
- ③长度len():
- ④成员运算in和not in:
- ⑤移除字符strip():
- ⑥切分split():
- ⑦循环取值:
- ①strip(), lstrip(), rstrip()
- ②lower(), upper()
- ③startswith(), endswith()
- ④格式化输出的三种方式
- A.%s的方式:
- B.format的方式:
- C.f-string的方式
- ①find(), rfind(), index(), rindex(), count():
- ②center(), ljust(), rjust(), zfill()
- ③expandtabs()
- ④captalize(), swapcase(), title():
- ⑤is数字系列
- ⑥is其他用法:
一、补充:for+range()
(一)使用while循环打印多个值时,操作会稍显繁琐:
count = 0 while count < 3: print("=" * 10) print("Step 1") print("Step 2") count += 1 # 实现将内容循环打印多次
(二)使用for循环可以更简单的实现这个操作:
for x in "a" * 3: # in后面跟一个有多个元素的字符串或者容器类型的数据,可以实现与元素数相同的循环次数 print("=" * 10) print("Step 1") print("Step 2")
(三)使用range()可以制造一个列表,更方便for循环进行取值:
range(start, stop[, step]) -> range object # 起始位置 结束位置 步长 range()制造的列表是左闭右开的区间,注意末尾数据不能取到!! >>> range(1,5,2) # 起始位置,结束位置,步长 [1, 3] >>> >>> range(1,5) # 省略步长,默认为1 [1, 2, 3, 4] range(stop) -> range object >>> range(5) # 省略起始位置与步长,默认起始位置为0,步长为1 [0, 1, 2, 3, 4]
二、可变与不可变类型
(一)可变类型:
值改变,id不变,说明改变的是原值,是可变类型。
可变类型的数据:list、dictionary。
(二)不可变类型:
值改变,id也改变,说明是产生了新的值,关联了新的内存空间,原值是不可变类型。
不可变类型的数据:integer、float、tuple、set、bool。
三、数字类型数据
在python3中,与数字有关的数据类型有两个,一个是整型integer,另一个是浮点型float,由于斗鱼数字相关,我们将他们归纳为数字类型来理解、记忆。
(一)基本使用
1.用途:
整型int:个数、年龄、号码、年份、月份等与整数相关的数据记录。
浮点型float:薪资、身高、体重等与小数相关的数据记录。
2.定义方式:
1) 整型 age = 18 # 本质上:age = int(18) a) 数据类型转换: int可以把纯数字组成的字符串转换成int类型,不可以包含小数点! int("18") # 18 2) 浮点型 salary = 3.3 # 本质上:salary = float(3.3) a) 数据类型转换: float可以将浮点型数组成的字符串转换成float类型。 float("1.8") # 1.8
了解:十进制的整数可以转换成其他进制的数字
print(bin(11)) # 0b1011 print(oct(11)) # 0o13 print(hex(11)) # 0xb
3.常用的操作及内置方法
数字类型常用于算数运算以及比较运算。
(二)总结:
1.存一个值or存多个值
int于float都只能存一个值。
2.可变or不可变
int于float都是不可变类型。
四、string字符串类型
(一)基本使用
1.用途:
对事物性质、状态的描述,例如名字、性别、国籍等等。
2.定义方式:
(1)直接定义:在引号(’ ‘, " ", ‘’’ ‘’’, “”" “”")内包含一串字符串。
s = "hello" # 实质上是:s = str("hello")
(2)数据类型转换:str功能可以将任意数据类型转换成str类型。
res = str([1, 2, 3]) # "[1, 2, 3]"
3.常用的操作及其内置方法
(1)优先掌握的操作
①按照索引取值:
可以正向取、反向取,只能取。
s = "hello python!" # 字符串s共13个元素,正向索引位置为 0 1 2 3 ... 12 # 反向索引位置为 -13 -12 -11 -10 ... -1 1) 正向取 s[6] # "p" 2) 反向取 s[-5] # "t" 3) 只能取 s[0] = "H" # 报错TypeError: 'str' object does not support item assignment
②切片:
顾头不顾尾,步长,这个与之前说的range()取值的范围类似。
切片的本质是从字符串中拷贝出一个字字符串。
注意!!!:起始位置的绝对位置必须在结束位置之前,否则无法正常取值!
a) [start:stop:step] 起始位置:可以省略,省略后默认是0 结束位置:可以省略,省略后默认是-1 步长:可以省略,省略后默认是1,也可以设置负数,逆序截取 s = "hello python!" # 字符串s共13个元素,正向索引位置为 0 1 2 3 ... 12 # 反向索引位置为 -13 -12 -11 -10 ... -1 1) 顾头不顾尾,省略步长时默认为1 s[0:9] # 'hello pyt' 2) 设置步长以及其他使用方法 s[:9:2] # 'hlopt' s[-2:2:1] # '' # 无内容,起始位置的绝对位置在结束位置之后了。 s[:] # "hello python!" # 完整的拷贝一个字符串 s[::] # "hello python!" # 完整的拷贝一个字符串,后面一个冒号可以省略 3) 逆序截取以及反向步长取值, s[::-1] # '!nohtyp olleh' s[-2:-2:-1] # 'nohtyp ol'
③长度len():
用于获取字符串的长度,注意空格也属于字符串。
s = "hello python!" len(s) # 13
④成员运算in和not in:
判断一个子字符串是否在目标字符串中。
s = "hello python!" print("hell" in s) # True print("HELL" not in s) # True
⑤移除字符strip():
移除字符串首尾指定的字符,默认移除的是空格,得出的结果是新的字符串,未改变原字符串。
1) 括号内不指定字符,默认移除的首尾空白字符(空格,\n换行符,\t纵向制表符) >>> str1=" zhangsan is not lisi! /t /n " >>> str1.strip() # 默认去掉的是字符串左右两端的空白字符串 'zhangsan is not lisi! /t /n' >>> str1.strip("! /t/n") # 组合去除字符串,则须将所有需去除的字符串都列出,包括\t \n 'zhangsan is not lisi' 2) 括号内指定字符,则移除首尾指定的字符(实现原理:根据指定的一个或多个字符,在字符串的左右两边开始寻找,碰到第一个不是指定的字符串的字符后,就会停下来) >>> str2="****zhangsan****" >>> str2.strip("*") 'zhangsan'
# 使用案例: user = input("用户名: ").strip() # 输入内容中误输入空格,可被纠正 password = input("密码: ").strip() if user == "zhangsan" and password == "123": print("账号密码正确") else: print("账号或密码错误")
⑥切分split():
注意:切分的结果是列表数据类型。
1) 括号内不指定字符,默认是以空格作为切分符号。 >>> str3="hello world" >>> str3.split() ['hello', 'world'] 2) 括号内指定分隔符号及切分次数,则按照括号内指定的字符切割字符串,默认的切分次数是全部切分。 >>> ip1="192.168.1.1" >>> ip1.split(".",2) ['192', '168', '1.1']
⑦循环取值:
字符串可以被for循环遍历取值。
>>> str4="张三VS李四" >>> for i in str4: ... print(i) ... 张 三 V S 李 四
(2)需要掌握的操作:
①strip(), lstrip(), rstrip()
移除两端指定字符,只移除左边指定字符,只移除右边指定字符。
>>> str1="****zhangsan****" >>> str1.strip("*") 'zhangsan' >>> str1.lstrip("*") 'zhangsan****' >>> str1.rstrip("*") '****zhangsan'
②lower(), upper()
将字符串全部变为小写/大写。
>>> str2="My Name Is Zhangsan!" >>> str2.lower() 'my name is zhangsan!' >>> str2.upper() 'MY NAME IS ZHANGSAN!'
③startswith(), endswith()
检测开头字符,检测结尾字符。
>>> str3="zhangsan lisi" >>> str3.startswith("z") # 判断字符串是否以指定的字符开头,结果为布尔值True or False。 True >>> str3.startswith("i") False >>> str3.endswith("i") # 判断字符是否以指定的字符结尾,结果为布尔值True or False。 True
④格式化输出的三种方式
A.%s的方式:格式化传的值必须与占位符%s意义对应。
>>> str4="my name is {name}, my age is {age}!" >>> str4.format(age=99,name="zhangsan") 'my name is zhangsan, my age is 99!' >>> str4="my name is {name}{name1}{name}, my age is {age}!" >>> str4.format(age=99,name="zhangsan",name1="lisi") 'my name is zhangsanlisizhangsan, my age is 99!'B.format的方式:
format可以不依赖顺序进行传值,可以按照参数进行传值。
# 类似%s的用法,传入的值会按照位置与{}一一对应 >>> str4="my name is {}, my age is {}!".format("zhangsan",99) >>> str4 'my name is zhangsan, my age is 99!' # 把format传入的多个值当作一个列表,然后用{索引}取值 >>> str4="my name is {0}, my age is {1}!".format("zhangsan",99) >>> str4 'my name is zhangsan, my age is 99!' >>> str4="my name is {1}, my age is {0}!".format("zhangsan",99) >>> str4 'my name is 99, my age is zhangsan!' >>> str4="my name is {1}, my name is {1}!".format("zhangsan",99) >>> str4 'my name is 99, my name is 99!'C.f-string的方式
python3.6的新特性,更高效简洁的传值方式。
name = "tom" age = 2 print(f"猫的名字叫{name},今年{age}岁了") # 猫的名字叫tom,今年2岁了 1) 格式化时可以使用函数,函数必须在{}内部 print(F"猫的名字叫{name.upper()},今年{age}岁了") # 猫的名字叫TOM,今年2岁了 2) 格式化时可以使用字典 cat = {"name": "tom", "age": 2} print(F"猫的名字叫{cat['name']},今年{cat['age']}岁了") # 猫的名字叫tom,今年2岁了 3) f包含的字符串可以放到多行 print(f"猫的名字叫{name}"\ f",今年{age}岁了") # 猫的名字叫tom,今年2岁了 4) {}内不能有\以及# 5) 显示{}以及%需要外加相同的字符转义 print(f'my name is {{egon}}') print('胜率是 %s%%' %70)
⑤split(), rsplit()
正向切分(左->右),rsplit() 相当于reverse split() 逆向切分(右->左)。
# split()会按照从左到右的顺序对字符串进行切分,可以指定切分的次数,切分的结果是列表类型数据 >>> str5="zhangsan/love/lisi" >>> str5.split("/",1) ['zhangsan', 'love/lisi'] # rsplit()与split()相反,从右往左切割,可以指定切割次数,切分结果为列表类型数据 >>> str5="zhangsan/love/lisi" >>> str5.rsplit("/",1) ['zhangsan/love', 'lisi']
⑥join():
字符串的拼接操作,从可迭代对象中取出多个字符串,然后按照指定的分隔符进行拼接,拼接的结果为字符串。
>>> "%".join("zhangsan") # 从字符串“zhangsan”中取出多个字符串,然后按照%作为分隔符号进行拼接 'z%h%a%n%g%s%a%n' >>> "%".join("Hello Python!")# 从字符串“Hello Python!”中取出多个字符串,然后按照%作为分隔符号进行拼接 'H%e%l%l%o% %P%y%t%h%o%n%!' >>> "*".join(["我","秦始皇","打钱"]) # 从列表中取出多个字符串,然后按照“*”作为分隔符号进行拼接 '我*秦始皇*打钱' >>> "秦始皇".join(["我","打钱","长生不老"]) '我秦始皇打钱秦始皇长生不老'
⑦replace():
使用新的字符串,替代旧字符串中的指定字符,可以同时指定修改个数。
>>> str7="my name is zhangsan, my age is 99" >>> str7.replace("99","66") # 语法:replace("原内容",“新内容”) 'my name is zhangsan, my age is 66' >>> str7.replace("my","My",1) # 指定修改个数,只把一个my改为My. 'My name is zhangsan, my age is 99'
⑧isdigit():
判断字符串是否是纯数字,返回值为布尔值True或False。
>>> str8="19491001" >>> str8.isdigit() True >>> str8="1949.10.01" >>> str8.isdigit() # 说明浮点型无法被判断,只能判断整型。 False
(3)了解的操作:
①find(), rfind(), index(), rindex(), count():
字符查找及统计操作。
1) find():在指定范围内查找子字符串的起始索引,找得到则返回数字1,找不到则就会-1; rfind()=> reverse find()与相当于出一个反转的find() print("=abcdefab".find("ab")) # 1 查找一个子字符串在大字符串中出现的起始位置,找到返回数字1 print("=adcabdefab".find("ab",0,5)) # -1 查找一个子字符串在大字符串中出现的起始位置,找不到返回数字-1 print("=adcabdefab".rfind("ab")) # 从后往前查找一个子字符串在大字符串中出现的起始位置 2) index(): 用法同find,找不到报错 rindex():用法同rfind,找不到报错 3) count():统计字符串在大字符串中出现的次数 >>> msg = "hello everyone" >>> msg.count('e') # 统计字符串e出现的次数 4
②center(), ljust(), rjust(), zfill()
字符填充操作。
>>> name='tony' >>> name.center(30,'-') # 总宽度为30,字符串居中显示,不够用-填充 -------------tony------------- >>> name.ljust(30,'*') # 总宽度为30,字符串左对齐显示,不够用*填充 tony************************** >>> name.rjust(30,'*') # 总宽度为30,字符串右对齐显示,不够用*填充 **************************tony >>> name.zfill(50) # 总宽度为50,字符串右对齐显示,不够用0填充 0000000000000000000000000000000000000000000000tony
③expandtabs()
修改制表符代表的空格数。
>>> name = 'tony\thello' # \t表示制表符(tab键) >>> name tony hello >>> name.expandtabs(1) # 修改\t制表符代表的空格数 tony hello
④captalize(), swapcase(), title():
字符大小写转换操作。
1) captalize:首字母大写 >>> message = 'hello everyone nice to meet you!' >>> message.capitalize() Hello everyone nice to meet you! 2) swapcase:大小写翻转 >>> message1 = 'Hi girl, I want make friends with you!' >>> message1.swapcase() hI GIRL, i WANT MAKE FRIENDS WITH YOU! 3) title:每个单词的首字母大写 >>> msg = 'dear my friend i miss you very much' >>> msg.title() Dear My Friend I Miss You Very Much
⑤is数字系列
#在python3中 num1 = b'4' #bytes num2 = u'4' #unicode,python3中无需加u就是unicode num3 = '四' #中文数字 num4 = 'Ⅳ' #罗马数字 #isdigt:bytes,unicode >>> num1.isdigit() True >>> num2.isdigit() True >>> num3.isdigit() False >>> num4.isdigit() False #isdecimal:uncicode(bytes类型无isdecimal方法) >>> num2.isdecimal() True >>> num3.isdecimal() False >>> num4.isdecimal() False #isnumberic:unicode,中文数字,罗马数字(bytes类型无isnumberic方法) >>> num2.isnumeric() True >>> num3.isnumeric() True >>> num4.isnumeric() True # 三者不能判断浮点数 >>> num5 = '4.3' >>> num5.isdigit() False >>> num5.isdecimal() False >>> num5.isnumeric() False ''' 总结: 最常用的是isdigit,可以判断bytes和unicode类型,这也是最常见的数字应用场景 如果要判断中文数字或罗马数字,则需要用到isnumeric。 '''
⑥is其他用法:
>>> name = 'tony123' >>> name.isalnum() #字符串中既可以包含数字也可以包含字母 True >>> name.isalpha() #字符串中只包含字母 False >>> name.isidentifier() True >>> name.islower() # 字符串是否是纯小写 True >>> name.isupper() # 字符串是否是纯大写 False >>> name.isspace() # 字符串是否全是空格 False >>> name.istitle() # 字符串中的单词首字母是否都是大写 False
(二)该类型总结
1.存值个数
字符串类型只能存一个值。
2.是否有序
字符串是有序的。
3.是否可变
字符串是不可变的。
断浮点数
num5 = ‘4.3’
num5.isdigit()
False
num5.isdecimal()
False
num5.isnumeric()
False
‘’’
总结:
最常用的是isdigit,可以判断bytes和unicode类型,这也是最常见的数字应用场景
如果要判断中文数字或罗马数字,则需要用到isnumeric。
‘’’
##### ⑥is其他用法: ```python >>> name = 'tony123' >>> name.isalnum() #字符串中既可以包含数字也可以包含字母 True >>> name.isalpha() #字符串中只包含字母 False >>> name.isidentifier() True >>> name.islower() # 字符串是否是纯小写 True >>> name.isupper() # 字符串是否是纯大写 False >>> name.isspace() # 字符串是否全是空格 False >>> name.istitle() # 字符串中的单词首字母是否都是大写 False
(二)该类型总结
1.存值个数
字符串类型只能存一个值。
2.是否有序
字符串是有序的。
3.是否可变
字符串是不可变的。
- python 基础-----数字,字符串,if while 循环 数据类型的转换简单介绍
- python 基础-----数字,字符串,if while 循环 数据类型的转换简单介绍
- Python基础4:数据类型:数字 字符串 日期
- Python新手学习基础之数据类型——字符串的切片截取
- Python新手学习基础之数据类型——字符串的切片截取
- python从基础到进阶:变量常量、数和字符串、数据类型、Python标识符、对象、行与缩进
- Python新手学习基础之数据类型——字符串的切片截取
- 3-Python3从入门到实战—基础之数据类型(数字-Number)
- Python基础:Python数据类型详解之字典与字符串
- python的数据类型,数字,布尔,字符串
- 04-python_数据类型-数字和字符串
- Python数据类型-----数字&字符串
- 【每天1分钟】PYTHON基础之数据类型-字符串(常用操作)
- Python数据类型之数字类型、字符串类型
- 第一阶段:Python开发基础 day07 Python基础语法入门--数字类型和字符串类型的内置方法...
- python实操(5):python数据类型及常用操作,数字、字符串、元组、列表、字典、集合
- Python-003-数据类型1--数字、字符串、布尔值
- Python基础——原生数据类型(字典,列表,元组,字符串)
- 3-Python3从入门到实战—基础之数据类型(数字-Number)
- python基础数据类型:字符串操作