本文目录
- 1. `input`:读入一行,字符串格式,结尾不带`\n`;
- 2. `sys.stdin.readline`:读入一行,字符串格式,结尾带`\n`
- 3. 不确定行数的多行读取
- 4. 确定行数的多行输入:
- 5. 多行输入,按特定符号结束输入:
- 6. 多行输入,特定数字结束输入
- 7. 多行字符串输入:
- 8. 多行字符串输入,以`,`隔开
- Tips
- list排序的两种方法
- 参考资料:
可以用IDLE尝试,按Ctrl + D结束多行输入。
1. input
:读入一行,字符串格式,结尾不带\n
;
2. sys.stdin.readline
:读入一行,字符串格式,结尾带\n
注意1,2两种方式都读取的是一行数据,一行里如果有多个值记得分割split()
!
3. 不确定行数的多行读取
● 方式一:
"""
链接:https://ac.nowcoder.com/acm/contest/5657/K
来源:牛客网
输入描述:
输入有多组测试用例,每组空格隔开两个整数
输出描述:
对于每组数据输出一行两个整数的和
示例1
输入
1 1
输出
2
"""
import sys
for line in sys.stdin:
a = line.split()
print(int(a[0]) + int(a[1]))
高鲁棒性的版本:
while True:
try:
line = input()
if not line:
break
a, b = map(int, line.split())
print(a + b)
except EOFError:
break
● 方式二:
import sys
for line in sys.stdin.readlines():
nums = list(map(int, line.split()))
print(nums[0] + nums[1])
IDLE中敲完最后一行的输入后,回车,然后以Ctrl + D结束多行输入。
4. 确定行数的多行输入:
import sys
t = int(input()) # 输入的函数
for _ in range(t):
line = sys.stdin.readline().split()
line = list(map(int, line))
# a, b = map(int, input().split())
print(line[0] + line[1])
5. 多行输入,按特定符号结束输入:
import sys
for line in sys.stdin:
line_ = list(map(int, line.split()))
if line_[0] == 0 and line_[1] == 0: # 如果输入是0 0就结束输入
break
else:
print(line_[0] + line_[1])
# 解法二
while True:
a, b = map(int, input().split()) # 确定只有两个数才能这么写,如果有多个数要用list(map())
if a == 0 and b == 0:
break
# 输出结果
print(a + b)
6. 多行输入,特定数字结束输入
"""
链接:https://ac.nowcoder.com/acm/contest/5657/D
来源:牛客网
输入数据包括多组。
每组数据一行,每行的第一个整数为整数的个数n(1 <= n <= 100), n为0的时候结束输入。
接下来n个正整数,即需要求和的每个正整数。
输出描述:
每组数据输出求和的结果
示例1
输入
4 1 2 3 4
5 1 2 3 4 5
0
输出
10
15
"""
import sys
for line in sys.stdin.readlines():
if line[0] == '0':
break
else:
line_ = list(map(int, line.split()))
print(sum(line_[1:]))
7. 多行字符串输入:
"""
链接:https://ac.nowcoder.com/acm/contest/5657/I
来源:牛客网
输入描述:
多个测试用例,每个测试用例一行。
每行通过空格隔开,有n个字符,n<100
输出描述:
对于每组测试用例,输出一行排序过的字符串,每个字符串通过空格隔开
链接:https://ac.nowcoder.com/acm/contest/5657/I
来源:牛客网
示例1
输入
a c bb
f dddd
nowcoder
输出
a bb c
dddd f
nowcoder
"""
import sys
for line in sys.stdin:
s = sorted(line.split())
print(' '.join(s))
8. 多行字符串输入,以,
隔开
"""
链接:https://ac.nowcoder.com/acm/contest/5657/J
来源:牛客网
输入描述:
多个测试用例,每个测试用例一行。
每行通过,隔开,有n个字符,n<100
输出描述:
对于每组用例输出一行排序后的字符串,用','隔开,无结尾空格
示例1
输入
a,c,bb
f,dddd
nowcoder
输出
a,bb,c
dddd,f
nowcoder
"""
import sys
for line in sys.stdin:
s = sorted(line.strip().split(',')) # 注意line最后有个`\n`要去掉!
print(','.join(s))
# 解法二
while True:
try:
line = input()
if not line:
break
words = line.split(',')
sorted_words = sorted(words)
output = ','.join(sorted_words)
print(output)
except EOFError:
break
Tips
- 字符串的
strip()
函数可以去除\n
、\t
等特殊符号。 - 运用
list(map(int, a))
类型的函数可以快速地转换格式。
list排序的两种方法
设a = [2, 3, 1, 6]
,可以用如下方式对该列表进行排序:
-
sorted(a)
返回一个排序后的结果,不会改变原始列表,对字符串也同样适用; -
a.sort()
无返回值,此时原始列表a已经排序好。注意这种方式会改变原始列表,对字符串也适用。