一:int类型
1 定义
age = 10 # age=int(10)
Python如何触发一个功能的运行
功能名字(参数)
print('hello','world')
>> hello world
2 功能和命令的输出
功能的输出
x=int(10)
print(x)
>> 10
_username = input('username: ')
print(_username)
>>
username: admin
admin
print命令的输出
info = print('name') >> name
print(info) >> None
总结
print()的结果是不能赋值给一个变量名的, 打印变量后结果为None
3 类型转换
3.1 纯数字的整型字符串才能转成int
res=int('100111')
print(res,type(res))
>> 100111
3.2 进制间转换
3.2.1 十进制转成其他进制
10进制 -> 二进制
11 - > 1011
1011-> 8+2+1
print(bin(11)) # 0b1011 # bin()把十进制转换成2进制, 0b开头表示这是2进制数
print(bin(123123))
>> 0b11110000011110011
10进制 -> 八进制
print(oct(11)) # 0o13
10进制 -> 十六进制
print(hex(11)) # 0xb
print(hex(123)) # 0x7b
3.2.2 其他进制转成十进制
二进制->10进制
print(int('0b1011',2)) # 11
八进制->10进制
print(int('0o13',8)) # 11
16进制->10进制
print(int('0xb',16)) # 11
二:float类型
1 定义
salary=3.1 # salary=float(3.1)
2 类型转换
res=float("3.1")
print(res,type(res))
3 使用
int与float没有需要掌握的内置方法
他们的使用就是数学运算+比较运算
三: 字符串类型
1 定义
msg='hello' # msg=str('msg')
print(type(msg))
2 类型转换
str可以把任意其他类型都转成字符串
res=str({'a':1})
print(res,type(res))
>> 3.1
3 使用:内置方法
3.1 按索引取值(正向取+反向取) :只能取
msg='hello world'
# 正向取
print(msg[0]) # 字符串按索引取值就是取第几个字符, 空格也可以取到
>> h
print(msg[5])
>>
# 反向取
print(msg[-1])
>> d
info = "david"
print(info[0])
>> d
# 只能取, 不能改. 字符串是不可变的
info = "david"
info[0] = 'a'
>> TypeError: 'str' object does not support item assignment
3.2 切片
索引的拓展应用,从一个大字符串中拷贝出一个子字符串
msg='hello world' # 顾头不顾尾, 如果要取到第n位索引值, 那么要写n+1
res=msg[0:5]
print(res)
print(msg)
步长
res=msg[0:5:2] # 0 2 4, 限定了0:5, 因此最多能取到第四个索引位
print(res) # hlo
反向步长
res=msg[5:0:-1] # 反向步长,要配合反向切片, 从正向5号索引位开始切, 从5反向切刀0号索引, 5:0, 从5开始, 0是取不到的. -1是切完把字符串再倒过来
print(res) #" olle"
msg='hello world'
res=msg[:] # res=msg[0:11], 只写一个冒号, 默认就是从0号位索引开始取, 取到最后.
print(res)
res=msg[::-1] # 把字符串倒过来, 并不会修改原字符串
print(res)
3.3 长度len, 统计可迭代对象元素个数
msg='hello world'
print(len(msg))
3.4 成员运算in和not in
判断一个子字符串是否存在于一个大字符串中
print("John" in "John Hello")
>> True
print("Jon" in "Jon Snow")
print("Jon" not in "Jon Snow")
print(not "Jon" in "Jon Snow") # 不推荐使用
3.5 移除字符串左右两侧的符号strip
默认去掉字符串左右两侧空格
msg=' david'
res=msg.strip()
print(msg) # 不会改变原值
print(res) # 是产生了新值
info = " admin "
new_info = info.strip()
print(info)
print(new_info)
.strip()就是用来处理.之前的字符串, 会把之前的字符串中的左右两侧的符号移除, 默认移除左右两侧的空格
print("++++hello ".strip())
print("++++hello&&&&".strip("+&"))
.strip(self,chars) # chars表示要去除的符号, 不写默认是去除空格
默认去掉的空格
msg='****admin****'
print(msg.strip('*'))
strip只去除两边,不去中间
msg='****a*****dmin****'
print(msg.strip('*'))
msg='**/*=-**admin**-=()**'
print(msg.strip('*/-=()')), #把要去的符号, 连着写在()即可
3.6 应用
inp_user=input('your name>>: ').strip() # inp_user=" david"
# 这样直接在输入名字和密码时, 就对输入做处理, 去掉左右两侧的空格, 避免用户输入账号密码时有空格, 导致登录失败
inp_password = input("password: ").strip()
if inp_user == 'admin' and inp_password == 'admin':
print("login ok")
else:
print("login failed")
3.7 切分split
把一个字符串按照某种分隔符进行切分,得到一个列表. 针对于有规律的字符串
而前面切片的结果仍然是一个字符串, 从大的字符串里把多个字符串拷贝出来.
默认分隔符是空格, 把字符串转换成列表
info='david 18 male'
res = info.split()
print(res) >> ['david', '18', 'male']
info = 'david 18 male'
name, age, gender = info.split()
print(name,age,gender) >> david 18 male
info = "name,age,18"
res = info.split(',')
print(res) >> ['david', ' 18', ' male']
.split(self,sep, maxsplits) #sep表示按照哪个字符进行切分
info = 'admin 18 male'
print(info[0:5])
>>> admin
print(info.split())
>>> ['admin', '18', 'male']
指定分隔符
info='david:18:male'
res=info.split(':')
print(res) >> ['david', '18', 'male']
指定分隔次数
info='david:18:male'
res=info.split(':',1) # 1表示只切分一次
print(res)
>> ['david', '18:male']
3.8 循环
info = 'david:18:male' #会把字符串的每一个字符都print一遍
for x in info:
print(x)
3.9 strip,lstrip,rstrip
msg = '****david****'
print(msg.lstrip('*')) >> david
print(msg.rstrip('*')) >> david****
print(msg.strip('*')) >> ****david
3.10 lower,upper
msg='AbbbCCCC'
print(msg.lower()) >> aabbbccc
print(msg.upper()) >> AABBBCCC
3.11 startswith,endswith
print("Jon is king".startswith("Jon")) >> True
print("Jon is king".endswith('king')) >> True
3.12 split,rsplit: 将字符串切成列表
info="david:18:male"
print(info.split(':',1)) # ["david","18:male"] # 默认从左开始切分
print(info.rsplit(':',1)) # ["david:18","male"]
3.13 join: 把列表拼接成字符串, 列表内不能用数字类型, 会报错
l=['david', '18', 'male']
res=l[0]+":"+l[1]+":"+l[2] # 不要用加号做字符串拼接, 效率低
res=":".join(l) # 按照某个分隔符号,把元素全为字符串的列表拼接成一个大字符串
print(res)
l = ['IT','Accounting','Finance','Sales']
print(':'.join(l))
info = ["admin",18,"IT"] # 要求列表里必须是字符串, 不能有数字类型, 否则会报错, TypeError: sequence item 1: expected str instance, int found
new_info = ":".join(info)
print(new_info)
info = ["admin","18","IT"]
new_info = ":".join(info)
print(new_info)
3.14 replace
msg="you can you up no can no bb"
print(msg.replace("you","YOU")) # 默认替换所有的you
print(msg.replace("you","YOU",1)) # 只替换从左到右第一个匹配的
3.15 isdigit
判断字符串是否由纯数字整型组成
print('123'.isdigit())
print('12.3'.isdigit())
age = "8.8"
age = int(age)
print(age)
age = input("input your age: ").strip()
if age.isdigit():
age = int(age) # int()只能转纯数字字符串
if age > 18:
print("猜大了")
elif age < 18:
print("猜小了")
else:
print("猜对了")
else:
print("必须输入纯数字")
3.16 find,rfind,index,rindex,count
msg='hello david hahaha'
找到关键字则返回起始索引
print(msg.find('e')) >> 1 # 返回要查找的字符串在大字符串中的起始索引
print(msg.index('david')) >> 6
找不到
print(msg.find('xxx')) # 返回-1,代表找不到
print(msg.index('xxx')) # 抛出异常 ValueError: substring not found
msg='hello david hahaha david david'
print(msg.count('david')) >> 3
3.17 center,ljust,rjust,zfill
print('david'.center(50,'*'))
>> **********************david***********************
print('david'.ljust(50,'*'))
>> david*********************************************
print('david'.rjust(50,'*'))
>> *********************************************david
print('david'.zfill(10))
>> 00000david
3.18 expandtabs
msg='hello\tworld'
print(msg.expandtabs(2)) # 设置制表符代表的空格数为2
3.19 captalize,swapcase,title
print("hello world david".capitalize()) #第一个单词的首字母大写
print("Hello WorLd DAvid".swapcase()) #大小写全部互换
print("hello world david".title()) #每个单词的首字母都转成大写
3.20 is其他
print('abc'.islower())
print('ABC'.isupper())
print('Hello World'.istitle())
print('123123aadsf'.isalnum()) # 字符串由字母或数字组成结果为True
print('ad'.isalpha()) # 字符串由由字母组成结果为True
print(' '.isspace()) # 字符串由空格组成结果为True
print('print'.isidentifier())
print('age_of_david'.isidentifier())
print('1age_of_david'.isidentifier())
num1=b'4' #bytes
num2=u'4' #unicode,python3中无需加u就是unicode
num3='四' #中文数字
num4='Ⅳ' #罗马数字
isdigit只能识别:num1、num2
print(num1.isdigit()) # True
print(num2.isdigit()) # True
print(num3.isdigit()) # False
print(num4.isdigit()) # False
isnumberic可以识别:num2、num3、num4
print(num2.isnumeric()) # True
print(num3.isnumeric()) # True
print(num4.isnumeric()) # True
isdecimal只能识别:num2
print(num2.isdecimal()) # True
print(num3.isdecimal()) # False
print(num4.isdecimal()) # False
`