(Python)IP地址转换 |
您所在的位置:网站首页 › python编写进制转换 › (Python)IP地址转换 |
‘’仅个人学习过程中的笔记与记录‘’
IP地址转换
题目描述:
IP 地址是32 位的二进制字符串,输入一个合法的二进制表示的IP 地址, 请将其转换为用“.”分隔开的4 个十进制数组成十进制格式输出(输出格式:204.148.21.114)。 【样例输入】 11001100100101000001010101110010 【样例输出】 204.148.21.114 解1: 思考: IP地址为32位二进制字符串,转换为十进制为固定的四个十进制数,即每八位进行进制转换,设想: 构建4次循环通过 % 和 / 运算符对输入内容依次进行分割,用int(num,2)将二进制转换为十进制,再用方法str.append()把分割的元素依次再追加到s[]字符串内 代码如下: def ip(num): #构建ip函数 s = [] for i in range (4): a = num % 10000000 s.append(str(int(a),2)) #将转换后的十进制转换为字符形式 num /= 10000000 return '.'. join (s [:: -1]) #在每个字符(除最后一个)之间添加“.” #s[::-1]操作为将其逆排序 a = ip(input ()) print(a)运行结果: TypeError: not all arguments converted during string formatting度娘一下了解到: ”% 操作符只能直接用于字符串(‘123’),列表([1,2,3])、元组,因此需要一一匹配操作符。“ 即%和后面的参数数量不对应...研究了半天改了几次代码都是各种错误,查询其他大佬的解决方案,有的又用了还没学习到的命令,且行数略有一点多... 目前初学中的初学水平实在没办法解决这个方案的问题,留在这里等以后来解答。
后又看见了不少大佬的博客,发现了一个最为简单的方法: 解2: 思考: 直接将字符串进行切片,再通过int转换进制,更改结尾命令,五行代码就解决。 代码如下: ip = input() print(int(ip[0:8],2),end='.') print(int(ip[8:16],2),end='.') print(int(ip[16:24],2),end='.') print(int(ip[24:32],2),end='')运行结果与示例一致。 该代码实在简短有效且粗暴,感觉自己智商被侮辱,谨记。 但是依然希望通过之后的学习能回来完美解决第一种想法的问题。
感谢下面几位大佬的博客以进行参考: python整数与IP地址转换_Python热爱者的博客-CSDN博客_python创建一个从整数到ip地址的转换函数 Python学习笔记:TypeError: not all arguments converted during string formatting_Big_quant的博客-CSDN博客_argument converted Python3 合法IP地址转换 - 犬饲Atsuhiro - 博客园 (cnblogs.com)
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |