- int 整形
- bool 布尔
- str 字符串
- list 列表
- tuple 元组
- dict 字典
- set 集合
- float 浮点
类型wzry
- 相同类型具有相同功能,也具有公共功能
四个维度讲解
- 定义
- 独有功能
- 公共功能
- 类型转换
- 其他
整形int
独有功能
- 5.bit_length() #转二进制,并显示占用的位数(无意义)
公共功能
- 加减乘除
转换
- bool与str 可转int
#bool-int int(True) int(False) #str(2,8,10,16) - int int('188',base=10) #str转十进制默认隐藏base=10 int('0x59',base=16)
- int与float
int(8.7) #=8
其他
长整型
长整形存在于python 2,python 3 仅有int
python2长整形范围:-9223372036854775808 - 9223372036854775807
地板除
- python 2中 9/2会等于4 (不准确)
- python 3 中等于4.5 (准确)
解决python2的不准确,引入以下
import __furure__ import division
布尔bool
定义
data = True alex_is_sb = True
- 独有功能
公共功能
v1 = True + True #2
转换
- 任何数据都能转换成bool
- 整数0,空字符串,空字典,空元组,空集合判定为False,其他为True
其他
- 当一个值作为if,while的判断条件时,值转成bool值再进行判断
字符串
定义
双括号包单括号,三引号换行
>>> print("包'治百病") 包'治百病 >>> print("包'治'百病") 包'治'百病 >>> print(''' ... 123 ... 456 ... 789 ... ''') 123 456 789 >>>
独有功能
- startswith()
- endswith()
isdecimal()
#与isdigital相比,范围限于'123456',123456 #isdigital范围过大,认定为①也是数字,不实用
strip()
去两边空格,换行符,制表符(tab \t),适用验证码
- rstrip
lstrip
可去除两边,单边 指定字符
strip('哥') lstrip('哥') rstrip('哥')
upper()
适用验证码,upper适用于赋值不应用本身
code = input('用户输入验证码: ').strip #将验证码放大 data = code.upper() if data = '7B88': print('代码正确') else: print('输入错误')
- lower()
replace()
v1 = '高清无码爱情动作片.mp4' v2 = v1.replace('无码','步兵') print(v2) #高清步兵爱情动作片.mp4 #敏感词 content = input('输入: ') chr_list=['铁蛋'.'二蛋','都比','草泥马'] for item in chr_list: content = content.replace(item,'**') #也可以判断是否有敏感词在列表里,有就添加列表,按照列表replace
split() 剪切
info = 'wupeiqi|root|wupeiqi.qq.com' v2 = info.split() print(v2) #['wupeiqi','root','wupeiqi.qq.com']
默认全切,可以在第二个参数(切几个)
v3 = info.split('|',1) print(v3) #['wupeiqi','root|wupeiqi.qq.com']
右切
v4 = info.rsplit('|') print(v4) #['wupeiqi','root','wupeiqi.qq.com']
右切应用场景,取路径上的扩展名
source_path = '/xxx/xxx/xxx/xxx.mp4' v1 = source_path.rsplit('.',1) print(v1) #['/xxx/xxx/xxx/xxx','mp4'] v1[1]
‘’.join(source_list) 拼接
>>> v1 = ['a','b','c'] >>> v2 = ''.join(v1) >>> print(v2) abc
format 格式化
name1 = '{}喜欢干很多职业,例如有{}{}职业' name2 = '{0}喜欢干很多职业,例如有{1}{2}职业' name3 = '{name}喜欢干很多职业,例如有{h1}{h2}职业' name1.format('老王','护士','嫩模') name2.format('老王','护士','嫩模') name3.format(name='老王',h1='嫩模',h2='护士')
- encode 转字节
decode
v1 = '嫂子'.encode('utf-8') 'v1'.decode('utf-8')
center
''王老汉'.center(20,',') >>> v1.center(20,'-') '--------王老汉---------'
- ljust() 居右展示 填充
rjust() 居左展示 填充
>>> v1.rjust(20,'-') '-----------------王老汉'
zfill 填0
类似rjust,常用于二进制
>>> '101'.zfill(8) '00000101'
字符串练习题
代码判断是否以al开头,以Nb为结尾
user_input = 'all_Nb'.strip()
if user_input.startswith('al'):
print('yes')
else:
print('no')
if user_input.endswith('Nb'):
print('yes')
else:
print('no')
将name变量"l"替换成'p'
name = 'alllll'
v1 = name.replace('l', 'p')
print(v1)
判断用户输入的值是否为整数,整数则转换整形并输出,不是则提示重新输入
while True:
user_input = input('输入值: ').strip()
if user_input.isdecimal():
user_input = int(user_input)
break
else:
print('输入错误,请重新输入数字')
print(user_input)
提示用户输入数字相加,并判断是否为数字
v1 = 0
while True:
user_input = input('输入数字相加 ').strip()
#分割
data = user_input.split('+')
#判断是否为数字标志位
digit_flag = True
#判断是否列表元素为数字
for i in data:
if not i.isdecimal():
# print('输入错误,不是数字')
digit_flag = False
continue
else:
v1 += int(i)
if digit_flag:
print('v1')
else:
print('输入错误,请重新输入')
user_input = input('输入数字相加 ').strip()
data = user_input.split('+')
if data[0].isdigit() and data[1].isdigit():
plus_num = int(data[0]) + int(data[1])
print(plus_num)
user_input = input('输入数字相加 ').strip()
data = user_input.split('+')
data[0]=data[0].strip()
data[1]=data[1].strip()
if data[0].isdecimal() and data[1].isdecimal():
plus_num = int(data[0]) + int(data[1])
print(plus_num)
提示手机号和验证码
import random
code = random.randrange(1000,9999)
msg = '你的验证码为: {},你的手机号为:{}'.format(code,'13311110000')
print(msg)
#取系统手机号
phone_number = msg.rsplit(':',1)
phone_number = phone_number[1]
#用户输入判断
#判断输入是否相等
user_input = input('请输入你的验证码和手机号,以逗号相隔: ').strip()
#用户输入的数据
user_data = user_input.split(',')
#判断是否为数字
if user_data[0].isdecimal() and user_data[1].isdecimal():
if user_data[0] == str(code) and user_data[1] == str(phone_number):
print('用户输入正确,手机号为{0},验证码为{1}'.format(user_data[0],user_data[1]))
else:
print('用户输入错误')
else:
print('输入的不是数字,请重新输入')
#将hobby装入列表并输出
hobby_list = []
name = input("Enter your name: ").strip()
while True:
hobby = input("输入爱好: 退出(Q/q) ").strip()
if hobby == 'q' or hobby == 'Q':
break
#添加列表
hobby_list.append(hobby)
#爱好字符串
data = '`'.join(hobby_list)
print(f'{name}喜欢{data}')
#将hobby装入列表并输出
hobby_list = []
name = input("Enter your name: ").strip()
while True:
hobby = input("输入爱好: 退出(Q/q) ").strip()
if hobby.upper == 'Q':
break
#添加列表
hobby_list.append(hobby)
#爱好字符串
data = '`'.join(hobby_list)
print(f'{name}喜欢{data}')
#int有strip功能
>>> v1 = '55 '
>>> v1
'55 '
>>> v1 = int(v1)
>>> v1
55
公共功能
- 相加(拼接)
- 相乘(字符串*整数)
- 长度
len
- 索引(无法修改)
#正取
message[0]
#倒取
message[-1]
#循环索引
- 从0到7
- 从-8(len(v1)+1) + 1
#倒叙
7 - 1
-1 - -7
切片(取头不取尾)
message[0:3] message[3:7] message[3:] message[:3] message[3:-1] message[3:len(message)] #最小操作,原子操作 #不支持赋值可以在新值拼接
步长
name = '生活不是电影,生活比电影苦' name[0:7:2] #生不电, name[1:8:2] #活是影生 name[::2] #生不电,活电苦 name[8:1:-1] #'活生,影电是不' #面试题 #字符串全部反转 value = name[::-1] value1 = name[-1::-1]
字符串循环
#while message = '来做点py交易呀' i = 0 while i < len(message): print(message[i]) i+=1 #for for i in range(len(message)): print(message[i]) #for 2 for i in message: print(i)
while 用于未知条件
for用于已知条件
while和for 都可用break continue
message = '来做点py交易呀' for i in message: if i = 'p': continue print(i) #来做点y交易呀
break continue 在嵌套下,只控制一层代码
字符串转换
- 字符串转整形
- 字符串可转bool,列表,字典
其他
- 字符串不可更改(更改不可作用于本身)
- range(start,end,step)
汇总练习题
# 代码判断是否以al开头,以Nb为结尾
# user_input = 'all_Nb'.strip()
# if user_input.startswith('al'):
# print('yes')
# else:
# print('no')
# if user_input.endswith('Nb'):
# print('yes')
# else:
# print('no')
# 将name变量"l"替换成'p'
# name = 'alllll'
# v1 = name.replace('l', 'p')
# print(v1)
# 判断用户输入的值是否为整数,整数则转换整形并输出,不是则提示重新输入
# while True:
# user_input = input('输入值: ').strip()
# if user_input.isdecimal():
# user_input = int(user_input)
# break
# else:
# print('输入错误,请重新输入数字')
#
# print(user_input)
# 提示用户输入数字相加,并判断是否为数字
# v1 = 0
# while True:
# user_input = input('输入数字相加 ').strip()
# #分割
# data = user_input.split('+')
#
# #判断是否为数字标志位
# digit_flag = True
# #判断是否列表元素为数字
# for i in data:
# if not i.isdecimal():
# # print('输入错误,不是数字')
# digit_flag = False
# continue
# else:
# v1 += int(i)
#
# if digit_flag:
# print('v1')
# else:
# print('输入错误,请重新输入')
#
# user_input = input('输入数字相加 ').strip()
# data = user_input.split('+')
# if data[0].isdigit() and data[1].isdigit():
# plus_num = int(data[0]) + int(data[1])
#
# print(plus_num)
# user_input = input('输入数字相加 ').strip()
# data = user_input.split('+')
# data[0]=data[0].strip()
# data[1]=data[1].strip()
#
# if data[0].isdecimal() and data[1].isdecimal():
# plus_num = int(data[0]) + int(data[1])
#
# print(plus_num)
#提示手机号和验证码
# import random
# code = random.randrange(1000,9999)
# msg = '你的验证码为: {},你的手机号为:{}'.format(code,'13311110000')
# print(msg)
#
# #取系统手机号
# phone_number = msg.rsplit(':',1)
# phone_number = phone_number[1]
#
#
#
# #用户输入判断
# #判断输入是否相等
# user_input = input('请输入你的验证码和手机号,以逗号相隔: ').strip()
# #用户输入的数据
# user_data = user_input.split(',')
#
#
#
# #判断是否为数字
# if user_data[0].isdecimal() and user_data[1].isdecimal():
# if user_data[0] == str(code) and user_data[1] == str(phone_number):
# print('用户输入正确,手机号为{0},验证码为{1}'.format(user_data[0],user_data[1]))
# else:
# print('用户输入错误')
# else:
# print('输入的不是数字,请重新输入')
#
#
# #将hobby装入列表并输出
# hobby_list = []
# name = input("Enter your name: ").strip()
# while True:
# hobby = input("输入爱好: 退出(Q/q) ").strip()
# if hobby == 'q' or hobby == 'Q':
# break
# #添加列表
# hobby_list.append(hobby)
# #爱好字符串
# data = '`'.join(hobby_list)
#
# print(f'{name}喜欢{data}')
#转二进制
# v1 = 675
# print(bin(v1))
#二进制转十进制
# v2 = '0b11000101'
# print(int(v2,base=2))
#二进制转十进制
# v3 = '11000101'
# print(int(v3,base=2))
#将v1 v2 转二进制再拼接
# v1 = 123
# v2 = 456
#
# v1_bin = bin(v1)[2:]
# v1_bin = bin(v1).replace('0b', '')
# v2_bin = bin(v2).replace('0b', '')
#
# data = v1_bin+v2_bin
#
# data = int(data, 2)
# print(data)
#将v1 v2 转二进制每个补足16位
# v1 = 123
# v2 = 456
#
# v1_bin = bin(v1).replace('0b', '')
# v2_bin = bin(v2).replace('0b', '')
#
# v1_bin = v1_bin.zfill(16)
# v2_bin = v2_bin.zfill(16)
#
# data = v1_bin + v2_bin
# print(int(data, 2))
#用户输入文本将文本中的敏感词替换**
#敏感词列表
# ban_word = ['苍老师','波波老师','三上老师']
#
# #用户输入
# user_input = input('你要说的话: ').strip()
#循环ban词,判断每一个是否在输入字符串里,再进行删除
# for word in ban_word:
# if word in user_input:
# user_input = user_input.replace(word,'***')
#
# print(user_input)
#循环ban词,如果有,则按照ban词全部替换
# if '苍老师' or '波波老师' in user_input:
# user_input = user_input.replace('苍老师','***')
# user_input = user_input.replace('波波老师','***')
# print(user_input)
#循环ban词,判断是否在字符串里,在里面加入pre_del_word ,之后按照pre_del_word 替换即可
# pre_del_word = []
# for i in ban_word:
# if i in user_input:
# pre_del_word.append(i)
#
# for i in pre_del_word:
# user_input = user_input.replace(i,'***')
#
# print(user_input)
#针对变量修改
# name = "aleX leNb "
#移除空格
# name = name.strip()
#判断是否al开头 切片 startswith
# if name[0:2] == 'al':
# print(name[:2],'是开头')
# if name.startswith('al') :
# print(name[:2],'是开头')
#判断Nb结尾 切片 endswith
# if name[-2:] == 'Nb':
# print(name[-2:],'是结尾')
#
# if name.endswith('Nb'):
# print(name[-2:],'是结尾')
#l换p
# name = name.replace('l','p')
# print(name)
#按照l切割
# name = name.split('l')
# print(name)
#分割l,仅限第一
# name = name.split('l',1)
# print(name[0])
#大写,小写
# name = name.upper()
# print(name)
#
# name = name.lower()
# print(name)
#字符串反转
# name = name[::-1]
# print(name)
# s = "123a4b5c"
#切片'123'
# s = s[:3]
# print(s)
#切片a4b
# s = s[3:6]
# print(s)
#切片c
# s = s[-1]
# print(s)
#ba2
# s = s[-3::-2]
# print(s)
# pre_message = "伤情最是晚凉天,憔瘁厮人不堪言"
#while 循环输出
# i = 0
# while i < len(pre_message):
# print(pre_message[i])
# i += 1
#for循环
# for i in pre_message:
# print(i)
# for i in range(len(pre_message)):
# print(pre_message[i])
#for倒序输出
# for i in range(len(pre_message)-1,-1,-1):
# print(pre_message[i])
#
# for i in range(-1,-len(pre_message),-1):
# print(pre_message[i])
#for倒计时
# for i in range(100,0,-1):
# print('倒计时{}秒'.format(i))
#出现’浪的次数‘
# user_input = input('输入你想要的: ').strip()
#
# count_word = 0
# # for i in user_input:
# # if i =='浪':
# # count_word+=1
# #
# # print(f'’浪‘出现了{count_word}次')
#
# for i in range(len(user_input)):
# if user_input[i] == '浪':
# count_word += 1
#
# print('狼出现的次数为: ',count_word)
#获取两次输入,提取数字
# user_input = input('请输入1: ').strip()
# user_input2 = input('请输入2: ').strip()
# user1_digit = []
#
# for i in user_input:
# if i.isdecimal():
# user1_digit.append(i)
#
# for i in user_input2:
# if i.isdecimal():
# user1_digit.append(i)
#
# sum_num = 0
# for i in user1_digit:
# i = int(i)
# sum_num += i
#
# print(sum_num)
#
# sum_num = 0
# for i in user_input:
# if i.isdecimal():
# i = int(i)
# sum_num += i
#
# for i in user_input2:
# if i.isdecimal():
# i = int(i)
# sum_num += i
#
# print(sum_num)
test