PYTHON错误——多行输入

1. 问题描述:

      给N行ipv7的地址,判断是否是合法的,如果是合法的输出其对应的十进制数,如果不合法输出-1。

     输入(N行ip地址,N不清楚):

1.0.0.0.0.0.0
0.0.0.0.0.0.0
0.0.0.0.0.0.
0.0.0.0.0..#
1......0
# 以ctrl + d  结束输出

      输出:

281474976710656
-1
-1
-1
281474976710656

       问题是N不知道,也就是不知道几行。(之前已经测试过使用input()按行读取数据,然后以最后一行什么不输入做为输出。但是这样是不行的。)

       最后才知道,系统给定的输入是包含\n的,也就是包含多行的。所以需要python实现多行接收。

2. 代码

import sys


def ipfunc(ip):
    if (not ip[0].isdigit()) or (not ip[-1].isdigit()) or (ip.count(".") != 6) or (int(ip[0]) == 0):
        return -1
    a = ip.split('.')
    for i in range(len(a)):
        if len(a[i]) == 0:
            a[i] = "0"
    s = ''
    l = []
    for i in a:
        try:
            int(i)
        except ValueError:
            return -1
        if (int(i) < 0) or (int(i) >255):
            return -1
        i = bin(int(i))[2:]
        i = i.rjust(8, '0')
        l.append(i)
    s = s.join(l)
    return s


if __name__ == '__main__':
    s_l = []
    for line in sys.stdin:
        s_l.append(line.strip())
    # while True:
    #     line_text = input()
    #     if line_text == '':
    #         break
    #     s_l.append(line_text)
    out_l = []
    for s in s_l:
        out_l.append(ipfunc(s))
    for o in out_l:
        if o == -1:
            print(-1)
            continue
        print(int(o, 2))

3. 结果

 

posted @ 2022-08-19 09:01  落月_YU  阅读(72)  评论(0编辑  收藏  举报