Python基础练习之Day5

本文介绍了三个编程问题的解决方案。第一个涉及使用列表推导式对输入的数字列表中的奇数进行平方。第二个问题是根据银行交易日志计算账户净余额,处理存款(D)和取款(W)操作。最后,第三个问题涉及到验证用户输入的密码是否符合特定的复杂性要求,包括字母、数字和特殊字符的组合。这些实例展示了Python在处理数据和验证用户输入方面的应用。
摘要由CSDN通过智能技术生成

1.使用列表推导式对列表中的每个奇数进行平方。 该列表由逗号分隔的数字序列输入。 >假设向程序提供以下输入:1,2,3,4,5,6,7,8,9

输出:1,9,25,49,81

#方法一
n=input('请输入(以逗号隔开):').split(',')
li=[]
for i in n:
    if int(i)%2!=0:
        li.append(int(i)**2)
print(*(li))

# 方法二
n=input('请输入(以逗号分隔):')。split(','print([(int(i)**2) for i in n if int(i)%2!=0])

#方法三
n=input('请输入(以逗号隔开):')
li=[int(i) for i in n]
def f(i):
    return i%2!=0
result=[i**2 for i in filter(f,li)]
print(*(result))

2.编写一个程序,根据控制台输入的交易日志计算银行账户的净金额。 事务日志格式如下所示:

D 100
W 200
输入: D 300 输出:500
D 300
W 200
D 100

total=0
while True:
    n = input('请输入:').split()
    if not n:
        break
    cm,nm=map(str,n)
    if cm=='D':
        total+=int(nm)
    if cm=='w':
        total-=int(nm)
print(total)

#方法二
li=[]
while True:
    n=input('请输入:')
    if not n:
        break
    else:
        li.append(n)
print(sum(list(int(i[2:]) if  i[0]=='D' else -int(i[2:]) for i in li)))

#方法三
li=[]
while True:
    n=input('请输入:')
    if n:
        n=n.strip('D ')
        n=n.replace('W ','-')
        li.append(n)
    else:break
print(sum([int(i) for i in li]))

3 网站要求用户输入用户名和密码进行注册。 编写一个程序来检查用户输入的密码的有效性。

下列的:
[a-z] 之间至少有 1 个字母
[0-9] 之间至少有 1 个数字
[A-Z] 之间至少有 1 个字母
至少 1 个字符来自 [$#@]
交易密码最小长度:6
交易密码最大长度:12’’’

#方法一
def is_low(x):
    for i in x:
        if 'a'<i and i<'z':
            return True
    return False
def is_up(x):
    for i in x:
        if 'A'<i and i<'Z':
            return True
    return False
def is_num(x):
    for i in x:
        if '0'<i and i<'9':
            return True
    return False
def is_other(x):
    for i in x:
        if i=='%' or i=='#'or i=='@':
            return True
    return False
x=input('请输入用户名,密码(大小写字符,数字,其他字符至少含一,不少于6位):').split(',')
li=[]
for i in x:
    if len(i)>=6 and is_low(i) and is_up(i) and is_num(i) and is_other(i):
        li.append(i)
print(*(li))
#方法二
import re
li=[]
def is_low(x):
    if re.findall('[a-z]',x):
        return True
    return False
def is_up(x):
    if re.findall('[A-Z]',x):
        return True
    return False
def is_num(x):
    if re.findall('[0-9]',x):
        return True
    return False
def is_other(x):
    if re.findall('[@#%&]',x):
        return True
    return False
x=input('请输入用户名,密码(大小写字符,数字,其他字符至少含一,不少于6位):').split(',')
for i in x:
    if len(i) >= 6 and is_low(i) and is_up(i) and is_num(i) and is_other(i):
        li.append(i)
print(*(li))

#方法三
def checK(x):
    cont=(len(x)>+6 and len(x)<=12)
    for i in x:
        if i.isupper():
            cont+=1
            break
    for i in x:
        if i.islower():
            cont+=1
            break
    for i in x:
        if i=='@'or i=='#' or i=='$':
            cont+=1
            break
    for i in x:
        if i.isnumeric():
            cont+=1
            break
    return cont==5
x=input('请输入用户名,密码(大小写字符,数字,其他字符至少含一,不少于6位):').split(',')
print(list(filter(checK,x)))

#方法四
import re
x=input('请输入用户名,密码(大小写字符,数字,其他字符至少含一,不少于6位):').split(',')
li=[]
for i in x:
    cont=(len(i)>=6 and len(i)<=12)
    cont+=bool(re.search('[a-z]',i))
    cont+=bool(re.search('[A-Z]',i))
    cont+=bool(re.search('[0-9]',i))
    cont += bool(re.search('[@#$]',i))
    if cont==5:
        li.append(i),
print(*(li))

#方法五
import re
x=input('请输入用户名,密码(大小写字符,数字,其他字符至少含一,不少于6位):').split(',')
pass_p=re.compile(r"^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[$#@]).{6,12}$")
for i in x:
    if pass_p.fullmatch(i):
        print(i)



  • 当全世界都说你是疯子的时候,你就离成功不远了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值