本文实例为大家分享了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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
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)
|
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/a9010064/article/details/114253794