Python多行输入

Python3的通用多行输入方式。

使用IDE为Visual Studio Code

输入数据

  • 输入数据类型1
1
2
3
5
5 3 1 4 2
2 4 5 1 3
  • 输入数据类型2
1
2
3
1
02:10
200

对于这样一行输入一个的情况,可以选择直接用以下方法处理,也可以考虑用更加通用的方案。

1
2
3
z = int(input())
t = input()
m = int(input())

第一种通用方案:5行代码1次回车

  • res 中每一个元素,就是一个 list,包含了输入。
1
2
3
4
5
res = []                # 1
while True: # 2
s = input() # 3
if s == '': break # 4
res.append(s) # 5

如果输入类型是类型1,可以在 append 之前加个特殊处理。

1
res.append([int(x) for x in s.split(' ')])
  • 在函数外面获取,传入到函数里面使用,无法调试
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
def test(n, start, end):
print("输入参数")
print("n is {}".format(n))
print("start is {}".format(start))
print("end is {}".format(end))
print("后续代码")
# 后续代码
a = 1 # 在这里加断点也无法继续调试
b = 1
c = a + b
print("sum of {} and {} is {}".format(a, b, c)) # 但是不加断点,可以一直执行到这里。

if __name__ == "__main__":
res = []
while True:
temp = input()
if temp == '':
break
res.append([int(i) for i in temp.split(' ')])

n = int(res[0][0])
start = res[1]
end = res[2]

# 传入参数
test(n, start, end)
  • 在函数里面获取命令行输入,无法调试
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def test():
res = []
while True:
temp = input()
if temp == '':
break
res.append([int(i) for i in temp.split(' ')])

for i in res:
print(i)

print("Finish!!!") # 在函数里面,在这个位置设置断点,F5下去不了。
# 后续代码

if __name__ == "__main__":
test()

第二种通用方案:6行代码1次回车

1
2
3
4
5
6
import sys                                # 1
res = [] # 2
s = sys.stdin.readline().strip("\n") # 3
while s != "": # 4
res.append(s) # 5
s = sys.stdin.readline().strip("\n") # 6

如果输入类型是类型1,可以在 append 之前加个特殊处理。

1
res.append([int(x) for x in s.split(' ')])
  • 在函数外面获取,传入到函数里面使用,无法调试
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
def test(n, start, end):
"""test function
"""
print("输入参数")
print("n is {}".format(n))
print("start is {}".format(start))
print("end is {}".format(end))
print("后续代码")
# 后续代码
a = 1 # 在这里加断点也无法继续调试
b = 1
c = a + b
print("sum of {} and {} is {}".format(a, b, c)) # 但是不加断点,可以一直执行到这里。

if __name__ == "__main__":

import sys # 1
res = [] # 2
s = sys.stdin.readline().strip("\n") # 3
while s != "": # 4
res.append([int(x) for x in s.split(' ')]) # 5
s = sys.stdin.readline().strip("\n") # 6

n = int(res[0][0])
start = res[1]
end = res[2]

# 传入参数
test(n, start, end)
  • 在函数里面获取命令行输入,无法调试
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
def test():
import sys # 1
res = [] # 2
s = sys.stdin.readline().strip("\n") # 3
while s != "": # 4
res.append([int(x) for x in s.split(' ')]) # 5
s = sys.stdin.readline().strip("\n") # 6

n = int(res[0][0])
start = res[1]
end = res[2]

print("函数内获取参数")
print("n is {}".format(n))
print("start is {}".format(start))
print("end is {}".format(end))
print("后续代码")
# 后续代码
a = 1 # 在这里加断点也无法继续调试
b = 1
c = a + b
print("sum of {} and {} is {}".format(a, b, c)) # 但是不加断点,可以一直执行到这里。

if __name__ == "__main__":

test()

解决方案

先用固定值调试,再用在函数外面获取然后传入到函数里面使用 或者 在函数里面获取的方式进行提交。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!