ACM的Python版輸入輸出

Microstrong0305發表於2018-09-06

目錄

一、輸入部分

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)

Reference

[1] https://www.zybuluo.com/diyer22/note/310572#%E4%BA%8C-%E8%BE%93%E5%85%A5%E9%83%A8%E5%88%86

[2] https://blog.csdn.net/luovilonia/article/details/40860323

 

相關文章