You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何限制输入为数字?及IP追踪器如何过滤IP格式输入?

Python输入过滤实用方案

嘿,这两个问题我都折腾过,给你分享些接地气的解决办法!

一、仅允许输入数字的实现思路

这里有两种常用的方法,挑你顺手的用就行:

  • 方法1:循环输入+类型校验(简单直接)
    用try-except捕获输入转数字失败的情况,循环提示直到用户输入合法:
while True:
    user_input = input("请输入一个数字:")
    try:
        # 要整数就用int(),要浮点数换float()
        num = int(user_input)
        print(f"搞定!你输入的数字是:{num}")
        break
    except ValueError:
        print("不对哦,请输入有效的数字~")

这个方法不用额外导入模块,新手友好。

  • 方法2:正则表达式匹配(精准控制格式)
    如果需要支持正负号、浮点数这类更复杂的数字格式,用正则就很方便:
import re

while True:
    user_input = input("请输入一个数字:")
    # 匹配整数、正负浮点数
    if re.fullmatch(r'^[-+]?(\d+(\.\d*)?|\.\d+)$', user_input):
        num = float(user_input) if '.' in user_input else int(user_input)
        print(f"完美!你输入的数字是:{num}")
        break
    else:
        print("输入格式不对,请重新输入数字!")

fullmatch能确保整个输入都是数字格式,不会混进其他字符。

二、IP格式输入过滤与简易追踪器优化

要做IP追踪器,第一步就是把非法IP挡在外面,这里有两种靠谱的验证方式:

1. 用内置ipaddress模块(推荐,省心)

Python3.3+自带的ipaddress模块能直接验证IP合法性,不管是IPv4还是IPv6都能搞定:

import ipaddress

def is_valid_ip(ip):
    try:
        ipaddress.ip_address(ip)
        return True
    except ValueError:
        return False

# 输入过滤逻辑
while True:
    target_ip = input("请输入要追踪的IP地址:")
    if is_valid_ip(target_ip):
        print(f"开始追踪IP:{target_ip}")
        # 这里放你的追踪逻辑,比如调用whois接口、获取地理位置等
        break
    else:
        print("请输入有效的IPv4或IPv6地址哦!")

这个方法不用自己写复杂的正则,模块已经帮你做好了所有校验,比如每个IP段是否在0-255之间。

2. 正则匹配IPv4(针对性更强)

如果你只需要支持IPv4,可以用专门的正则表达式:

import re

def is_valid_ipv4(ip):
    # 严格匹配IPv4格式,每个段0-255
    pattern = r'^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$'
    return re.fullmatch(pattern, ip) is not None

# 输入过滤
while True:
    target_ip = input("请输入要追踪的IPv4地址:")
    if is_valid_ipv4(target_ip):
        print(f"合法IPv4,开始追踪:{target_ip}")
        # 把你的追踪代码放在这里
        break
    else:
        print("无效的IPv4地址,请重新输入!")

正则里的每个分段都限制了数值范围,避免出现像256.0.0.1这种非法IP。

整合到你的追踪器里

把验证函数加到你的代码开头,确保只有合法IP才会进入追踪流程。举个简单的整合例子:

import ipaddress

def is_valid_ip(ip):
    try:
        ipaddress.ip_address(ip)
        return True
    except ValueError:
        return False

def track_ip(ip):
    # 这里替换成你自己的追踪逻辑
    print(f"正在追踪 {ip}...")
    print(f"{ip} 的大致地理位置:美国加利福尼亚州(模拟结果)")

# 主流程
while True:
    target_ip = input("请输入要追踪的IP地址:")
    if is_valid_ip(target_ip):
        track_ip(target_ip)
        break
    else:
        print("IP格式不对,请重新输入!")

这样就能保证只有符合格式的IP才会被处理啦。

内容的提问来源于stack exchange,提问作者Abay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:08:06