def check_ip(ip_bin):
"""接受由二进制数表示IP的字符串,判定是否为合法IP,当其合法时返回其对应的十进制IP,否则返回'data error!'"""
if len(ip_bin) == 32 and set(ip_bin) <= {'0', '1'}:
ls = []
for i in range(4):
ls.append(str(int(ip_bin[i * 8:(i + 1) * 8], 2)))
ip_dec = '.'.join(ls) return ip_dec
return 'data error!' # 输入不合法时返回'data error!'
if name == 'main': IP = input()
没有报错呀,是不是你的格式有问题:
def check_ip(ip_bin):
if len(ip_bin) == 32 and set(ip_bin) <= {'0', '1'}:
ls = []
for i in range(4):
ls.append(str(int(ip_bin[i * 8:(i + 1) * 8], 2)))
ip_dec = '.'.join(ls)
return ip_dec
return 'data error!' # 输入不合法时返回'data error!'
if __name__ == '__main__':
IP = input()
print(check_ip(IP))
运行结果如下:
你好,根据你提供的代码,可能出错的地方在于比较符号 "<=" 的位置,应该放在集合括号内。以下是修改后的代码:
def check_ip(ip_bin):
"""接受由二进制数表示IP的字符串,判定是否为合法IP,当其合法时返回其对应的十进制IP,否则返回'data error!'"""
if len(ip_bin) == 32 and set(ip_bin) <= {'0', '1'}:
ls = []
for i in range(4):
ls.append(str(int(ip_bin[i * 8:(i + 1) * 8], 2)))
ip_dec = '.'.join(ls)
return ip_dec # 输入合法时返回其对应的十进制IP
else:
return 'data error!' # 输入不合法时返回'data error!'
if __name__ == '__main__':
IP = input() # 输入二进制的IP地址字符串
print(check_ip(IP)) # 调用函数判定并完成IP转换
例如,当输入字符串 "11000000101010000000000100000001" 时,输出结果应该为 "192.168.1.129"。
希望这可以帮助到你。