ACM的Python版输入输出

一、输入部分

1. 单样例输入

(1)只需输入一行

2. 多样例输入

(1)多样例输入,无明确样例个数

(2)要输入N行

 (3)多样例输入,指定结束符号

(4)输入N组,指定结束符号

3.多样例复杂输入

(1)多样例输入,无明确样例个数

(2)要输入N行

Reference


一、输入部分

1. 单样例输入

(1)只需输入一行

题目描述:

对10个整数从小到大排序。

 输入:

4 85 3 234 45 345 345 122 30 12

输出:

3 4 12 30 45 

代码:

listt = map(lambda x:int(x), raw_input().split()) # 万能的输入语句
listt.sort()  # 调用标准库
for i in listt :
    print i, # 输出

注:python2.7的代码。 

2. 多样例输入

(1)多样例输入,无明确样例个数

有多组输入数据,但没有具体的告诉你有多少组,只是让你对应每组输入,应该怎样输出。

题目要求:

多样例输入一组整数,每组数据占一行,每组数据中有两个数,要求输出两个数之和。每个结果占一行。

输入:

1  3

2  4

3  5

输出:

4

6

8

 代码:

while True:
    try:
        a, b = map(int, raw_input().strip().split())
        print (a+b)
    except EOFError:
        break

(2)要输入N行

输入一个整数,告诉我们接下来有多少组数据,然后在输入每组数据的具体值。

 输入

学生数量N占一行, 每个学生的学号、姓名、三科成绩占一行,空格分开。成绩是正整数

 输出

各门课的平均成绩 最高分的学生的数据(包括学号、姓名、3门课成绩),平均成绩用整数表示

 样例输入


1 blue 90 80 70 
b clan 80 70 60

 样例输出

85 75 65 
1 blue 90 80 70

代码:

tcase = int(raw_input().strip())

def f(x):
    if ord(x[0]) < 90:  # 判断是数字还是字母
        return int(x)
    return x

a = [map(f, raw_input().split()) for i in range(tcase)]

print sum([x[2] for x in a])/tcase, sum([x[3] for x in a])/tcase, sum([x[4] for x in a])/tcase  # 打印平均数

 
listt=[sum(x[2:]) for x in a]
maxx=max(listt)
for i in range(tcase):  # 找到最大值的索引
    if listt[i] ==maxx:
        break

print str(a[i]).replace(', ',' ').replace('\'','')[1:-1]+' '  #列表一排万能输出,但输出得不好看,不用在意
 

 

在举一个例子:

题目要求:

输入N组数据样例,每组数据占一行,每组数据中有两个数,要求输出两个数之和。每个结果占一行。

输入:

3

1 2

2 3

3 4 

输出:

3

5

代码:

tcase = int(raw_input().strip())
for case in range(tcase):
    a, b = map(int, raw_input().strip().split())
    print (a + b)

 (3)多样例输入,指定结束符号

有多组输入数据,没有具体的告诉你有多少组,但是题目却告诉你遇见什么结束。

题目要求:

多样例输入一组整数,每组数据占一行,每组数据中有两个数。要求输出两个数之和,每个结果占一行。输入 0 0 表示输入结束。

输入:

1 2

3 4

5 6

0 0

输出:

3

7

11

 代码:

while True:
    a, b = map(int, raw_input().strip().split())
    if a == 0 and b == 0:
        break
    print (a + b)

(4)输入N组,指定结束符号

输入有N组,并且题目告诉你每组输入遇见什么结束,与第三种不同之处在于,每组输入都有相应的细化。

题目要求:

输入N组数据样例,每组数据占一行,每组数据中有两个数,要求输出两个数之和。每个结果占一行。输入 0 0 表示输入结束。

 输入:

3

1 2

3 4

0 0

输出:

3

7

代码:

tcase = int(raw_input().strip())
for case in range(tcase):
    a, b = map(int, raw_input().strip().split())
    if a == 0 and b == 0:
        break
    print (a + b)

3.多样例复杂输入

(1)多样例输入,无明确样例个数

 有多种输入数据,对于每组输入数据的第一个数代表该组数据接下来要输入数据量。

题目描述:

输入多组数据样例,每组数据占一行,对于每一行的输入,又划分为第一个数和其他的数,第一个数代表那一组数据一共有多少输入。输出其它数据相加之和。

输入:

1 2

2 1 2

3 1 2 3

4 1 2 3 4

输出:

2

3

6

10

代码:

while True:
    try:
        data = map(int, raw_input().strip().split())
        n, array = data[0], data[1:]
        sum = 0
        for i in range(n):
            sum += array[i]
        print (sum)
    except EOFError:
        raise

(2)要输入N行

这次的输入实现输入一个整数,告诉我们有多少行,在输入每一行。对于每一行的输入,又划分为第一个数和其他的数,第一个数代表那一组数据一共有多少输入。

题目描述:

输入N组数据样例,N告诉我们有N行数据。对于每一行的输入,又划分为第一个数和其他的数,第一个数代表那一组数据一共有多少输入。输出其它数据相加之和。

输入:

4

1 2

2 1 2

3 1 2 3

4 1 2 3 4

 输出:

2

3

6

10

代码:

tcase = int(raw_input().strip())
for case in range(tcase):
    data = map(int, raw_input().strip().split())
    n, array = data[0], data[1:]
    sum = 0
    for i in range(n):
        sum += array[i]
    print (sum)
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值