python字符串问题

编写程序,输入的IP地址,判断其是否合法一般用点分方式来显示,用点将IP地址分成4个部分,每个部分8位,表示成一个十进制的无符号整数,范围在0~255之间,如192.168.10.160是一个合法的IP地址。
编写程序,输入的IP地址,判断其是否合法。

基于Monster 组和GPT的调写:

def is_valid_ip(ip):
    # 首先将IP地址按照点号进行拆分
    parts = ip.split(".")
    
    # 判断IP地址是否由4个部分组成
    if len(parts) != 4:
        return False
    
    # 对每个部分进行检查,确保其都是0~255之间的数字
    for part in parts:
        try:
            num = int(part)
            if num < 0 or num > 255:
                return False
        except ValueError:
            return False
    
    # 如果程序执行到了这里,说明IP地址是合法的
    return True

# 示例用法
ip = input("请输入IP地址:")
if is_valid_ip(ip):
    print("输入的IP地址合法")
else:
    print("输入的IP地址不合法")


  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7779369
  • 除此之外, 这篇博客: python基础篇面试习题总结中的 10:请编写一个函数实现将IP地址转换成一个整数 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 请编写一个函数实现将IP地址转换成一个整数。
    如 10.3.9.12 转换规则为:
            10            00001010
    
             3            00000011
    
             9            00001001
    
            12            00001100
    
    再将以上二进制拼接起来计算十进制结果:00001010 00000011 00001001 00001100 = ?
    
    
    def v1(addr):
        # 取每个数
        id = [int(x) for x in addr.split(".")]
        print(id)
        return sum(id[i] << [24, 16, 8, 0][i] for i in range(4))
    
    print(v1("127.0.0.1"))
    
    # [127, 0, 0, 1]
    # 2130706433
    

    ------------------------------------------------