python数据类型与功能 | 基础四

2025-04-06T17:06:00
  • 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)
当前页面是本站的「Baidu MIP」版。发表评论请点击:完整版 »