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. 结果