笔试题(五):IP合法性

# IPV4地址可以用一个32位无符号整数来表示,一般用点分方式来显示,
# 点将IP地址分成4个部分,每个部分为8位,表示成一个无符号整数(因此正号不需要出现),
# 如10.137.17.1,是我们非常熟悉的IP地址,一个IP地址串中没有空格出现(因为要表示成一个32数字)。
# 现在需要你用程序来判断IP是否合法。
# 数据范围:数据组数:1≤t≤18
# 进阶:时间复杂度:O(n),空间复杂度:O(n)

# 输入一个ip地址,保证不包含空格
# 输出描述:
# 返回判断的结果YES or NO


def ip_recognize(ip):
    if isinstance(ip, str):
        if len(ip) == len(ip.replace(" ", "")):
            ip_list = ip.split(".")
            if len(ip_list) == 4:
                for i in range(4):
                    ip_i = ip_list[i]
                    if ip_i.isdigit():
                        ip_int = int(ip_i)
                        if 0 <= ip_int <= 255:
                            return "YES"
                        else:
                            return "NO"
                    else:
                        return "NO"
            else:
                return "NO"
        else:
            return "NO"
    else:
        return "NO"


if __name__ == "__main__":
    ip1 = "255.255.255.1"
    ip2 = "25b.255.255.1000"
    ip3 = "255.255.255"
    ip4 = "25 5.255.255"
    print("ip1 is: ", ip_recognize(ip1))
    print("ip2 is: ", ip_recognize(ip2))
    print("ip3 is: ", ip_recognize(ip3))
    print("ip4 is: ", ip_recognize(ip4))

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Trisyp

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值