python 练习2020/07/12

4. 将一个字典的 key和value 互换
s={'a':1,'b':2}
result={}
for k,v in s.items():
    result[v]=k

print(result)
5. 将一个多重嵌套的列表的元素进行互换,存到另一个同等维度的嵌套列表中,例如:[[1,2,3],[4,5,6]]互换后变
成[[1,4],[2,5],[3,6]]

s=[[1,2,3],[4,5,6]]
result=[]
for i in range(3):
     temp=[]
     for j in s:
         temp.append(j[i])
     result.append(temp)

print(result)
6. 有一个3 x 4的矩阵,要求编程求出其中值最大的那个元素的值,以及其所在的行号和列号,矩阵可以通过嵌
套列表来模拟
lst = [
    [1,2,3,4],
    [4,5,1,3],
    [8,4,9,0]
]

max_values=0
for i in lst:
    for j in i:
        if j > max_values:
            max_values=j

print(max_values)

for i in range(len(lst)):
    for j in range(len(lst[i])):
        if lst[i][j]==max_values:
            print('最大值所在的行号是%s,列号是%s'%(i+1,j+1))

7. 递归实现嵌套列表求和
"""
遍历列表,判断子元素是不是列表,不是的话添加到result中
是列表就继续遍历列表,再把子元素给取出来,添加到result中
再计算result的总和
"""
lst = [
    [1,2,3,4],
    [4,5,1,3],
    [8,4,9,0]
]

result=[]
def sum_list(s):
    if not isinstance(s,list):
        return Flase
    for i in s:
        if not isinstance(i,list):
            result.append(i)
        else:
            sum_list(i)
    return sum(result)

print(sum_list(lst))

8. 打印斐波拉契数列前n项
"""
n=0 和n=1时,返回1
第n项:n-1+n-2
"""
def fib(n):
    if n==0 or n==1:
        return 1
    else:
        return fib(n-1)+fib(n-2)

for i in range(10):
    print(i,fib(i))
    print(fib(i))

9. 检查ipV4的有效性,有效则返回True,否则返回False,(提示使用split函数进行分割)

def is_ip(s):
    for i in s.split('.'):
        if not i.isdigit() and int(i)>=0 and int(i)<=255:
            return '无效ip'
    else:
        return '有效ip'

ip = "168.2.52.68"
print(is_ip(ip))

10. 检测密码强度
c1 : 长度>=8
c2: 包含数字和字母
c3: 其他可见的特殊字符
强:满足c1,c2,c3
中: 只满足任一2个条件
弱:只满足任一1个或0个条件
import string

#判断长度
def check_len(s):
    if len(s)>=8:
        return True
    else:
        return False

#判断数字和字母
def check_letter(s):
    digit=False
    letter=False
    for i in s:
        if i in string.digits:
            return True
        if i in string.ascii_letters:
            return True
    if digit and letter:
        return True
    else:
        return False

#判断特殊字符
def check_punctuation(s):
    for i in s:
        if i in string.punctuation:
            return True
    else:
        return False

#判断密码组合
def check_password(s):
    if check_len(s) and check_letter(s) and check_punctuation(s):
        return '强'
    elif check_len(s) and check_letter(s):
        return '中'
    elif check_len(s) and check_punctuation(s):
        return '中'
    elif check_letter(s) and check_punctuation(s):
        return '中'
    elif check_len(s) or check_letter(s) or check_punctuation(s):
        return '弱'
    else:
        return '弱'


passwd_1 = "Hhq123456!"
passwd_2 = "Hhq123456"

passwd_3 = "Hhq!"
passwd_4 = "Hhq"

print(check_password(passwd_1))
print(check_password(passwd_2))
print(check_password(passwd_3))
print(check_password(passwd_4))



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值