本文实例为大家分享了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