目錄
A+B
類型一:多組輸入,組數未知
輸入:輸入包括兩個正整數a,b(1 <= a, b <= 10^9),輸入數據包括多組。
輸出:輸出a+b的結果
解讀:一行是一組輸入,有多行輸入,輸出有多行輸出
# eg:
# 輸入
1 5
3 4
# 輸出
6
7
法1:使用sys
import sys
for line in sys.stdin:
# strip()不帶參數,默認是清除兩邊的空白符
# split()通過指定分隔符對字符串進行切片,默認以空格爲分隔符
a = line.strip().split()
a = [int(x) for x in a]
print(sum(a))
– strip()函數詳解.
– split()函數詳解.
法2:使用內置函數
# 一行只有2個數
while True:
try:
# map(function, iterable, ...)
a, b = map(int, input().strip().split())
print(a + b)
except EOFError:
break
# 擴展:一行有多個數
while True:
try:
l = list(map(int, input().strip().split()))
print(sum(l))
except EOFError:
break
類型二:多組輸入,組數t已知
輸入:輸入第一行包括一個數據組數t(1 <= t <= 100);接下來每行包括兩個正整數a,b(1 <= a, b <= 10^9)
輸出:輸出a+b的結果
解讀:第一行是組數t,之後是多組輸入,輸出爲多行輸出
# eg:
# 輸入
2
1 5
3 4
# 輸出
6
7
法1:使用sys
import sys
# sys.stdin 當沒有接受到輸入結束信號就一直遍歷每一行
for line in sys.stdin:
data = list(map(int,line.strip().split()))
if len(data)==1:
continue
else:
print(data[0]+data[1])
法2:使用內置函數
# 一行只有2個數
# 先輸入行數t,然後再進行其他編碼
t=int(input())
for i in range(t):
a,b=map(int,input().split())
print(a+b)
# 擴展:一行有多個數
t=int(input())
for i in range(t):
l=list(map(int,input().strip().split()))
print(sum(l))
類型三:多組輸入,有終止條件
輸入:輸入包括兩個正整數a,b(1 <= a, b <= 10^9),輸入數據有多組, 如果輸入爲0 0則結束輸入。
輸出:輸出a+b的結果
解讀:多行輸入,有終止條件,輸出爲多行輸出
# eg:
# 輸入
1 5
3 4
0 0
# 輸出
6
7
法1:使用sys
import sys
for line in sys.stdin:
a = list(map(int, line.split()))
if a == [0,0]:
break
print(sum(a))
法2:使用內置函數
# 一行只有2個數
# 添加終止條件
while True:
n,m=map(int,input().strip().split())
if n == 0 and m == 0:
break
print(n + m)
# 擴展:一行有多個數 方法和類型一、二里面的擴展思路一樣 用list()函數即可
類型四:多組輸入,有終止條件,每行個數已知
輸入:
輸入數據包括多組。
每組數據一行,每行的第一個整數爲整數的個數n(1 <= n <= 100), n爲0的時候結束輸入。
接下來n個正整數,即需要求和的每個正整數。
輸出:每組數據輸出求和的結果。
解讀:多組輸入,有終止條件,每行第一個數爲需要帶入計算的整數的個數
# eg:
# 輸入
4 1 2 3 4
5 1 2 3 4 5
0
# 輸出
10
15
法1:使用sys
# 使用readline()函數
import sys
while True:
line = sys.stdin.readline().strip()
if line == '0':
break
else:
lista = list(map(int,line.split()))
print(sum(lista[1:]))
– readline()函數詳解.
法2:使用內置函數
# 思路是讀取一行,然後將第一個數和後面的分開
while True:
l = list(map(int, input().split()))
if len(l) == 1 and l[0] == 0:
break
else:
print(sum(l[1:]))
類別五:多組輸入,有組數t,求一系列和
輸入:
輸入的第一行包括一個正整數t(1 <= t <= 100), 表示數據組數。
接下來t行, 每行一組數據。
每行的第一個整數爲整數的個數n(1 <= n <= 100)。
接下來n個正整數, 即需要求和的每個正整數。
輸出:每組數據輸出求和的結果
解讀:多行輸入,有組數t,一行有多個數,求和;輸出爲多行輸出(是類型二的擴展)
# eg:
# 輸入
2
4 1 2 3 4
5 1 2 3 4 5
# 輸出
10
15
法1:使用sys
import sys
n = sys.stdin.readlines()
for i in n:
tmp = list(map(int,i.strip().split()))
if len(tmp) > 1:
print(sum(tmp[1:]))
法2:使用內置函數
t=int(input())
for i in range(t):
l=list(map(int,input().strip().split()))
print(sum(l[1:]))
類型六:多組輸入,每行個數已知,一系列和
輸入:
輸入數據有多組, 每行表示一組輸入數據。
每行的第一個整數爲整數的個數n(1 <= n <= 100)。
接下來n個正整數, 即需要求和的每個正整數。
輸出:每組數據輸出求和的結果
解讀:多行輸入,無終止條件,輸出爲多行輸出
# eg:
# 輸入
4 1 2 3 4
5 1 2 3 4 5
# 輸出
10
15
法1:使用sys
import sys
for line in sys.stdin:
lists = list(map(int, line.split()))
print(sum(lists[1:]))
法2:使用內置函數
# 注意是否越界
while True:
try:
l=list(map(int,input().strip().split()))
print(sum(l[1:]))
except EOFError:
break
類型六:多組輸入,一系列和
輸入:
輸入數據有多組, 每行表示一組輸入數據。
每行的第一個整數爲整數的個數n(1 <= n <= 100)。
接下來n個正整數, 即需要求和的每個正整數。
輸出:每組數據輸出求和的結果
解讀:多行輸入,無終止條件,輸出爲多行輸出
# eg:
# 輸入
1 2 3 4
1 2 3 4 5
0 0 0 0
# 輸出
10
15
0
法1:使用sys
import sys
for i in sys.stdin:
l=list(map(int,i.strip().split()))
print(sum(l))
法2:使用內置函數
while True:
try:
l=list(map(int,input().strip().split()))
print(sum(l))
except EOFError:
break
字符串排序
類型一:一行字符串個數n,一行字符串
輸入:
輸入有兩行,第一行n
第二行是n個空格隔開的字符串
輸出:輸出一行排序後的字符串,空格隔開,無結尾空格
# eg:
# 輸入
5
c d a bb e
# 輸出
a bb c d e
法1:使用sys
import sys
first_line = sys.stdin.readline()
second_line = sys.stdin.readline()
strings = second_line.strip().split()
strings.sort()
st = ' '.join(strings)
print(st)
法2:使用內置函數
while True:
try:
n=int(input())
mystr=list(map(str,input().strip().split()))
mystr.sort()
print(' '.join(mystr))
except EOFError:
break
類型二:多行字符串,空格分隔
輸入:
多個測試用例,每個測試用例一行。
每行通過空格隔開,有n個字符,n<100
輸出:對於每組測試用例,輸出一行排序過的字符串,每個字符串通過空格隔開
# eg:
# 輸入
a c bb
f dddd
nowcoder
# 輸出
a bb c
dddd f
nowcoder
法1:使用sys
import sys
for line in sys.stdin:
lists = line.split()
lists.sort()
print(' '.join(lists))
法2:使用內置函數
while True:
try:
mystr=input().strip().split()
mystr.sort()
print(' '.join(mystr))
except EOFError:
break
類型三:多行字符串,逗號分隔
輸入:
多個測試用例,每個測試用例一行。
每行通過空格隔開,有n個字符,n<100
輸出:對於每組用例輸出一行排序後的字符串,用’,'隔開,無結尾空格
# eg:
# 輸入
a,c,bb
f,dddd
nowcoder
# 輸出
a,bb,c
dddd,f
nowcoder
法1:使用sys
# strip() 需要加上
import sys
for line in sys.stdin:
lists = line.strip().split(',')
lists.sort()
print(','.join(lists))
法2:使用內置函數
while True:
try:
mystr=input().strip().split(',')
mystr.sort()
print(','.join(mystr))
except EOFError:
break