题解 | #参数解析#

合法IP

http://www.nowcoder.com/practice/995b8a548827494699dc38c3e2a54ee9

这道题描述不是很清楚,示例中的情况只属于提交问题中的一小部分,提交问题中会有‘+’、‘03’或者空等情况。查看解题中的答案发现很多已经过时,提交无法通过。废了些时间做出来了,和大家分享一下。

while True:
    try:
        s = input().split('.')
        c = 0  # 计数器,指导‘YES’输出
        if len(s) != 4:  # 位数不够4,直接NO
            print('NO')
            continue
        for i in s:
            if not i.isdigit():  # 存在非数字字符,直接NO
                print('NO')
                continue
            elif int(i) > 255 or (i.startswith('0') and len(i) > 1):  # 最大值大于255 或者数字为'03'这种格式的,NO
                print('NO')
                continue
            else:
                c +=1
        if c ==4:  # 计数器,4次循环结束后再执行YES输出
            print('YES')
    except:
        break
全部评论
是不是应该改为break
6 回复 分享
发布于 2022-04-06 16:20
好多continue都不用写。。。
3 回复 分享
发布于 2022-01-22 23:00
输入的ip存在多个非数字字符时是有BUG的,如“abc.abc.15.18”,会多输出“NO”,当然也包括超出范围的数字字符
点赞 回复 分享
发布于 2022-02-27 13:24
这种题目不需要弄个计数器,遇到NO的情况直接返回NO就行了
点赞 回复 分享
发布于 2022-04-10 20:01
这几个continue直接写成break,执行速度会更快
点赞 回复 分享
发布于 2023-12-04 18:20 陕西
for循环里的continue换成break
点赞 回复 分享
发布于 03-15 14:40 湖北

相关推荐

牛客5655:其他公司的面试(事)吗
点赞 评论 收藏
分享
42 13 评论
分享
牛客网
牛客企业服务