1. 储备知识
- 所有从键盘输入的都是字符串。如输入 12,实际上是' 12'。
- input()函数:input()函数等待用户从键盘输入,接收一个字符串,包括空格,都可以输入。【只有回车不接受,作为结束符】这说明每调用一次input()函数只会识别到输入的一行。
- str.split(): str.split()等价于str.split(' ')即以空格形式分开字符串,返回一个字符串数组。例如:若输入'1 2 3 ', 则会得到['1','2','3']. 同时其会将字符串前后空格忽视掉。
- str.strip(): str.strip()等价于str.strip(' ')默认忽视掉str前后的空格,返回忽视相应字符后的字符串。str.strip(',')默认忽视掉str前后的, 以此类推。
- map(fun, iterable): 将fun应用于可迭代对象的iterable的每个元素。一般搭配list使用,转成数组。或者直接将某行的不同值赋给不同变量: m,n,t = map(int, input().split())。
- sys.stdin.readline(): sys模块的输入stdin,获取输入的一行。
- iter(fun, stop_flag): 每次都调用函数fun,直至遇到停止标志stop_flag。
2. 读取输入
读取单行输入
if __main__ == '__name__':
a = input().split()/list(map(int, input().split()))
print(a)
读取多行输入且第一行为行数(即固定行数)
if __name__ == '__main__':
n = input() # 获取行数
for _ in range(n) # 从第二行开始获取内容并根据题目来操作
# 这里我直接把输入转为数组
print(list(map(int, input().split())))
读取多行输入但不知有多少行
# 以读入空行且是空字符串结束
if __name__ == '__main__':
# 以读入空行为结束
arr = []
for line in iter(input,''):
arr.append(line.split())
print(arr)
# 以读入空行结束(这里的空行可以由多个空格组成 也视作结束)
if __name__ == '__main__':
try:
arr = []
while True:
str_input = input().strip() # 这样即使遇到空行 也会转为空字符串 就是与上一个结束情况不同的地方所在
if str_input == '':
break
arr.append(str_input.split())
print(arr)
except:
pass
# 利用sys.strdin.readline()实现,只需将上述的input()都换成sys.strdin.readline()即可。