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

Python循环未统计IP地址最后一段长度的问题排查

问题分析与解决

你的问题很典型——程序只在遇到非数字字符(也就是IP里的.)时才打印当前段的长度,但最后一段后面没有非数字字符,所以这段的长度根本没机会被输出!

我们来拆解一下你的代码逻辑:

  • 遍历IP地址的每个字符,遇到数字就累加segmentLength
  • 遇到非数字时,才会增加segmentCount、打印当前段长度,然后重置segmentLength
  • 最后你虽然把segmentCount加1来修正总段数,但完全漏掉了打印最后一段的长度

修正方案

只需要在循环结束后,额外检查并打印最后一段的长度就行(毕竟最后一段肯定有数字,不然输入也不是合法IP了)。修改后的代码如下:

address = input("Please enter an IP address ")
segmentCount = 0
segmentLength = 0
for char in address:
    if char.isdigit():
        segmentLength += 1
    else:
        segmentCount += 1
        print("segmentLength of segment #", segmentCount, "is {}".format(segmentLength))
        segmentLength = 0
# 新增:打印最后一段的长度
if segmentLength > 0:
    segmentCount += 1
    print("segmentLength of segment #", segmentCount, "is {}".format(segmentLength))
print("segmentCount is {}".format(segmentCount))

这样测试输入Please enter an IP address 1012.321.32.21时,就能输出你想要的结果了:

segmentLength of segment # 1 is 4
segmentLength of segment # 2 is 3
segmentLength of segment # 3 is 2
segmentLength of segment # 4 is 2
segmentCount is 4

另外提个小优化:用str.isdigit()替代字符是否在数字字符串里的判断,代码会更简洁易读~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:29:05