练习

"""
题目描述:
	现在IPV4下用一个32位无符号整数来表示,一般用点分方式来显示
	点将IP地址分成4个部分,每个部分为8位,
	表示成一个无符号整数(因此不需要用正号出现),
	如10.137.17.1,是我们非常熟悉的IP地址,
	一个IP地址串中没有空格出现(因为要表示成一个32数字)。
现在需要你用程序来判断IP是否合法。
输入描述:
	输入一个ip地址
输出描述:
	返回判断的结果YES or NO
示例1:

输入
	10.138.15.1
输出
	YES
"""
while True:
    s=input('IP:')
    if s=='exit':
        break
    li=s.split('.')
    def fun(num):	##判断每个部分是否是在8位以内
        if 0<=int(num)<=255:
            return True
        else:
            return False
    li1=list(map(fun,li))
    if s.count('.')==3:	##判断是否分为4个部分
        if li1.count(True)==4:
            print('YES')
        else:
            print('NO')
    else:
        print('NO')

在这里插入图片描述

"""
题目描述: 密码要求
	1.长度超过8位
	2.包括大小写字母.数字.其它符号,以上四种至少三种
	3.不能有相同长度超2的子串重复
	说明:长度超过2的子串
输入描述:
	一组或多组长度超过2的子符串。每组占一行
输出描述:
	如果符合要求输出:OK,否则输出NG
示例1
输入

	021Abc9000
	021Abc9Abc1
	021ABC9000
	021$bc9000
输出
	OK
	NG
	NG
	OK

"""
def checklen(s):
    if len(s) > 8:
        return True
    else:
        return False

def check2(s):
    flag_up,flag_low,flag_digit,flag_other = 0,0,0,0
    for i in s:
        if i.isupper():
            flag_up = 1
        elif i.islower():
            flag_low = 1
        elif i.isdigit():
            flag_digit =1
        else:
            flag_other = 1

    if (flag_up + flag_low + flag_digit + flag_other ) >= 3:
        return True
    else:
        return False

"""
In [1]: a = '021Abc9000'

In [2]: len(a)
Out[2]: 10

In [3]: a[1:4]
Out[3]: '21A'

In [4]: a[0:3]
Out[4]: '021'

In [5]: a[1:4]
Out[5]: '21A'

In [6]: a[2:5]
Out[6]: '1Ab'

In [7]: a[3:6]
Out[7]: 'Abc'

In [8]: a[4:7]
Out[8]: 'bc9'

In [9]: a[5:8]
Out[9]: 'c90'

In [10]: a[6:9]
Out[10]: '900'

In [11]: a[7:10]
Out[11]: '000'

"""

def check3(s):
    for i in range(len(s) -3):
        if s.count(s[i:i+3]) > 1:
            return False
    return True


while True:
    s = input()
    if s == 'quit':
        break
    if checklen(s) and check2(s) and check3(s):
        print('OK')
    else:
        print('NG')

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值