python3实例 IP地址判断

输入一串字符,判断该字符串是否为点分十进制的IP地址,若是则转换为16进制输出,否则输出“Error”

注意:输入可能是任意的一个字符串,比如“abc.bas.fefe.4r4”或者“23.23.11.23.123”
这都是不合法的IP地址

例如

输入:192.41.6.20

输出:0xC0290614

输入:257.32.23.1

输出:Error
解1


import re
def isIP(str):
    p = re.compile('^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$')
    if p.match(str):
        return True
    # else:
    #     return False
myStr = input()
if isIP(myStr):
    print(IP(myStr).strHex().upper())
    # ip = list(map(int, myStr.split('.')))
    # print('0x', end='')
    # for i in ip:
    #     print(hex(i)[2:].upper().rjust(2, '0'), end='')
else:
    print('Error')

解2:

def change(lis):
	if len(lis)!=4:
		return 'Error'
	try:             # 判断字符串是否存在非数字
		lis=[int(i) for i in lis]
	except:
		return 'Error'
	for i in lis:
		if i<0 or i>255:    # 判断ip地址是否合法
			return 'Error'
	temp='0x'           #记录16进制数
	for i in lis:
		a=hex(int(i))[2:].upper().rjust(2,'0')  #转换为16进制
		# if len(a)!=2:
		# 	a='0'+a
		temp+=a
	return temp
s=list(map(str,input().split('.')))
print(change(s))

解3

l = input().split(".")
if len(l) != 4:
    print("Error")
else:
    s = ""
    for i in l:
        try:
            num = int(i)
            if num > 255 or num < 0:
                print("Error")
                s = ""
                break
            else:
                s += hex(num)[2:].upper().rjust(2, "0")
        except ValueError:
            print("Error")
            s = ""
            break
    if s:
        print("0x" + s)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值