Python字符串

str类

  • 字符串对象是不可改变的对象:一旦创建字符串,其内容就是不可变的

    str1 = str() 		# 使用构造函数创建
    str2 = str("abc")
    str3 = ""
    str4 = "abc"
    
  • 为优化性能

    Python会使用字符串对象来表示相同内容字符串
    在这里插入图片描述

缓存与小数据池机制(本部分可以跳过)

  • 代码块的缓存机制

    在执行同一个代码块的初始化对象命令时,会重用已存在的值

    代码块缓存机制适用范围:int, float, str, bool

  • 小数据池,也称为小整数缓存机制

    是针对不同代码块之间的缓存机制

    适用范围:int, float, str, bool

  • 注意:

    1、如果在同一代码块下,采用的是统一代码块下的
    缓存机制
    2、如果是不同代码块,则采用小数据池的驻留机制

  • demon

    # 几乎所有的字符串都符合缓存机制,具体的规则如下:
    # 规则一:非乘法获得的字符串全部满足代码块的缓存机制
    str1 = "山川异域,风月同天。寄诸佛子,共结来缘。"
    str2 = "山川异域,风月同天。寄诸佛子,共结来缘。"
    print("非乘法字符串:", str1 is str2)
    
    # 规则二:乘数为1时,和规则一相同
    
    # 规则三:乘数>1时,仅含有大小写字母、数字、下划线的字符串,并且总长度<=20,才会满足代码块缓存机制
    # 乘数>=2时,仅含大小写字母,数字,下划线,总长度<=20 满足
    str5 = "Qq123456!@#$%^&*()_" * 10
    str6 = 10 * "Qq123456!@#$%^&*()_"
    print("乘数>=2时:", str5 is str6)
    
    输出结果:
    三个空字符串的内存空间: 2505928876784 2505928876784 2505928876784
    两个值相同的变量: 2505935015024 2505935015024
    True True
    非乘法字符串: True
    乘数>=2时: True
    

str类的常用方法

在这里插入图片描述
在这里插入图片描述

demon:用户注册功能

在这里插入图片描述

# @function:登录名是否合法
# @Description:一只萤火虫

# 1、用户名最多25个字符长度、不能包含空格、单双引号、问号等特殊符号
def validate_login_name(login_name):
    str_len = len(login_name)
    if str_len == 0 or str_len > 25:
        return False
    # 自定义的非法字符串,大家可以根据自己的系统进行自由的添加
    invalid_chars = " '\"?!@#$%^&*()+"
    for char in login_name:
        if char in invalid_chars:
            return False
    return True

# 2、密码6-18位,只能包含字母、数字、特殊符号(下划线、@、#、$、!)
#       纯数字、纯字母时,密码强度都是弱 (★★☆☆☆☆)
#       数字+符号、数字+字母、字母+符号,强度为中(★★★★☆☆)
#       同时存在三种字符,强度为强(★★★★★★)
valid_symbols = [chr(value) for value in range(ord("A"), ord("Z") + 1)]
valid_symbols += [chr(value) for value in range(97, 97 + 26)]
valid_symbols += [chr(value) for value in range(ord("0"), ord("9") + 1)]
valid_symbols += list("_@#$!")
def validate_password(password):
    str_len = len(password)
    if str_len < 6 or str_len > 18:
        return False
    global valid_symbols
    for char in password:
        if char not in valid_symbols:
            return False
    # 如果代码能够执行到这里,密码一定是合法的
    if password.isdecimal() or password.isalpha():
        return "★" * 2
    if password.isalnum() or validate_password_decimal_symbol(password) or validate_password_letter_symbol(password):
        return "★" * 4
    return "★" * 6


def validate_password_decimal_symbol(password):
    """ 验证传入的字符串是否是数字+合法特殊符号的组合 """
    valid_symbols = [chr(value) for value in range(ord("0"), ord("9") + 1)]
    valid_symbols += list("_@#$!")
    valid_symbols = str(valid_symbols)
    for char in password:
        if valid_symbols.find(char) == -1:
            return False
    return True

def validate_password_letter_symbol(password):
    """ 验证传入的字符串是否是字母+合法符号的组合 """
    return True

# 3、用户输入正确的email - 请自行完成
# 必须包含@符号,且只能包含一个
# @和.  符号不能在开头,也不能在结尾
# x@x.x
# 第一个x:字符或数字、下划线
# 第二个x:可以是字母或数字
# 第三个x:字母 .com .cn  .org .net

if __name__ == '__main__':
    login_name = "adm)in"
    print("登录名是否合法:", validate_login_name(login_name))

    password = "admin123@"
    print("密码级别:", validate_password(password))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值