Python基础练习之Day5
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)
- 当全世界都说你是疯子的时候,你就离成功不远了