前天做了那个网易的笔试,发现在输入输出问题上浪费许多时间。这里总结一下。
一
有多组输入数据,但没有具体的告诉你有多少组,只是让你对应每组输入,应该怎样输出。
while True:
try:
num = list(map(int, input().strip().split()))
print(num[0]+num[1]),#print加逗号不会换行
except EOFError:
break
二
输入一个整数,告诉我们接下来有多少组数据,然后在输入每组数据的具体值
numcase = int(raw_input().strip())
for case in range(numcase):
nums=[int(i) for i in input().strip().split()]
print(...)
三
输入有多组,并却题目告诉你每组输入遇见什么结束,与第三种不同之处在于,每组输入都有相应的细化
tcase = int(raw_input().strip())
for case in range(tcase):
a, b = map(int, input().strip().split())
if a == 0 and b == 0:
break
print a + b,
四
有多种输入数据,对于每组输入数据的第一个数代表该组数据接下来要输入数据量
while True:
try:
data = map(int, input().strip().split())
n, array = data[0], data[1:]
sum = 0
for i in range(n):
sum += array[i]
print sum,
except EOFError:
raise
五
这种类型的输出注意的就是换行,这类题目说在输出样例中,每组样例之间有什么什么,所以我们在对应输出的同时要判断一下是否是最后一组输出,如果不是,就 将题目所说的东西输出(一般是换行或空格),如果是,就直接结束。
while True:
data = raw_input().strip()
if data.isspace():
break
else:
data = map(int, data)
n, array = data[0], data[1:]
sum = 0
for i in range(n):
sum += array[i]
print sum,
六:列表生成式
[x * x for x in range(1, 11)]
[x * x for x in range(1, 11) if x % 2 == 0]
[m + n for m in 'ABC' for n in 'XYZ']
>>> d = {'x': 'A', 'y': 'B', 'z': 'C' }
>>> for k, v in d.items():
... print(k, '=', v)
...
y = B
x = A
z = C