Python基础100题打卡Day6

题目十八

网站要求用户输入用户名和密码才能注册。编写一个程序来检查用户输入的密码的有效性。
以下是检查密码的标准:
至少有一个大写字母
至少有一个小写字母
至少有一个数字
至少有[$#@]中的一个特殊符号
长度至少为6
长度至多为12
程序能够对以逗号相隔的密码输入时进行检测,并将符合条件的密码输出。
比如以下列作为输入:
ABd1234@1,a F1#,2w3E*,2We3345
则输出为:
ABd1234@1

代码实现

方法一

def up_check(x):
    for i in x:
        if (i < 'A' and i >'Z'):
            return False
    return True

def low_check(x):
    for i in x:
        if (i < 'a' and i >'z'):
            return False
    return True

def num_check(x):
    for i in x:
        if (i < '0' and i >'9'):
            return False
    return True

def fu_check(x):
    for i in x:
        if i == '$' or i == '#' or i== '@':
            return True
    return False

s = input("请输入密码:").split(',')
shu_s = []
for i in s:
    length = len(i)
    if (
       6 <= length
        and length <= 12
        and up_check(i)
        and low_check(i)
        and num_check(i)
        and fu_check(i)
    ):
        shu_s.append(i)
print(shu_s)

方法二

import re
s = input("请输入密码,并以','相隔:").split(',')
lst = []

for i in s:
    cnt = 0
    cnt += 6 <= len(i) and len(i) <= 12
    cnt += bool(re.search("[a-z]",i))
    cnt += bool(re.search("[A-Z]",i))
    cnt += bool(re.search("[0-9]",i))
    cnt += bool(re.search("[@#$]", i))
    if cnt == 5:
        lst.append(i)
print(",".join(lst))

运行结果

请输入密码:ABd1234@1,a F1#,2w3E*,2We3345
['ABd1234@1']

题目十九

您需要编写一个程序来对(名称、年龄、分数)元组按升序排序,其中名称是字符串,年龄和分数是数字。元组是通过控制台输入的。
排序标准是:
1:根据名字排序
2:然后根据年龄
3进行排序:然后按分数排序
优先考虑的是名字>年龄>分数。
如果给出以下元组作为程序的输入:
Tom,19,80
John,20,90
Jony,17,91
Jony,17,93
Json,21,85
然后,程序的输出应该是:
[(‘John’, ‘20’, ‘90’), (‘Jony’, ‘17’, ‘91’), (‘Jony’, ‘17’, ‘93’), (‘Json’, ‘21’, ‘85’), (‘Tom’, ‘19’, ‘80’)]

代码实现

方法一

lst = []
while True:
    s = input("请按照姓名,年龄,分数的顺序输入,并以逗号相隔").split(",")
    if not s[0]:
        break
    lst.append(tuple(s))

lst.sort(
    key=lambda x: (x[0], x[1], x[2])
)
print(lst)

运行结果

请按照姓名,年龄,分数的顺序输入,并以逗号相隔Tom,19,80
请按照姓名,年龄,分数的顺序输入,并以逗号相隔John,20,90
请按照姓名,年龄,分数的顺序输入,并以逗号相隔Jony,17,91
请按照姓名,年龄,分数的顺序输入,并以逗号相隔
[('John', '20', '90'), ('Jony', '17', '91'), ('Tom', '19', '80')]

涉及函数

re库中search(“搜索内容”,需要被搜索的字符串)
.sort函数中,以19题中lst.sort(key=lambda x: (x[0], x[1], x[2])为例,键值以lambda函数规定了排序重要的先后,实现了元组中的三类数据的重新排列。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值