本文目录

  • 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],可以用如下方式对该列表进行排序:

  1. sorted(a)返回一个排序后的结果,不会改变原始列表,对字符串也同样适用;
  2. a.sort()无返回值,此时原始列表a已经排序好。注意这种方式会改变原始列表,对字符串也适用。