首先说明input()获得的结果都是字符串,需要自己将其转成字符型。
1、一行输入
1.1 输入一个数/字符串
一行输入如果输入只有一个数或者一个字符串的话,直接使用input读取就可以了
s = input()
print(s)
1.2 输入一个数组
输入一个数组的话和输入一个数类似,只不过需要使用split()分解一下
s = input()
s = [i for i in s.split()]
print(s)
2、两行输入
两行读取要在一行读取的基础上再进行一些操作。这里举个例子,假设第一行输入数组长度,第二行输入数组,那么读入操作分两步,首先获得数组长度,然后获取数组。
# 输入
4
1 2 3 4
# 代码
if __name__ == "__main__":
n = int(input())
num = [int(i) for i in input().split(' ')]
print(n,num)
# 输出
4 [1,2,3,4]
3、多行输入
3.1 每行输入一个数/字符串
如果每行只输入一个数或者字符串的话这种情况直接使用while循环和input进行读取。
if __name__ == "__main__":
while True:
s = input()
if s != "":
print(s)
else:
break
3.2 每行读取不同的内容
有的时候题目要求每行内容输入不同,举个例子,第一行输入操作个数,从第二行还是输入n个数组。
重点以二维数组为例子
# 情况一:
# 输入:
# 3
# 1 2 3
# 4 5 6
# 7 8 9
# 输出:[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
if __name__ == "__main__":
n = int(input())
arr = []
for i in range(n):
arr.append(list(map(int, input().rstrip().split())))
print(arr)
# 情况二:
# 输入:
[[5,4], [6,3], [6,7], [6,6], [4,6]]
# 用eval函数即可。
lists = input()
print(eval(lists))
eval函数的用法
# 输入:这种比较怪异了其实。以防万一吧。
[
["1","1","1","1","0"],
["1","1","0","1","0"],
["1","1","0","0","0"],
["0","0","0","0","0"]
]
if __name__ == "__main__":
m = 5 # 行
n = 4 # 列
res = '' # 用res拼接为一行,最后再用eval转为list即可。
for i in range(m+2):
a = input().strip()
res += a
print(eval(res))
4、多组/多行 数据的输入
4.1 知道有多少组:
第一行输入一个整数T(1<=T<=10),表示数据组数。
每组数据占两行,第一行输入一个整数N(1<=N<=10^5);
第二行输入N个由空格隔开的整数,表示A[1]到A[N](-104<=A[i]<=104)。
1
4
3 -2 4 -1
输入的写法:
if __name__ == "__main__":
T = int(input())
while T > 0:
T -= 1
n = int(input())
num = [int(i) for i in input().split(' ')]
print(solution(n,num))
4.2 有多组数据,但不知道多少组
# 输入
4 5
while True:
a,b=map(int,input().strip().split())
# 这里整理下sys.stdin.readline()、sys.stdin.readline().strip()和input的区别。
while True:
4.3 有多组输入数据,没有具体的告诉你有多少组,但是题目却告诉你遇见什么结束
while True:
a,b=map(int,input().strip().split())
if a==0 and b==0:
break
4.4 输入有多组,且题目告诉你每组输入遇见什么结束,与第三种不同之处在于,每组输入都有相应的细化。
tcase = int(input().strip())
for case in range(tcase):
a, b = map(int, input().strip().split())
if a == 0 and b == 0:
break
4.5 这次的输入实现输入一个整数,告诉我们有多少行,在输入每一行。对于每一行的输入,有划分为第一个数和其他的数,第一个数代表那一组数据一共有多少输入。
tcase = int(input().strip())
for case in range(tcase):
data = map(int, input().strip().split())
n, array = data[0], data[1:]
sum = 0
for i in range(n):
sum += array[i]
5、输出
关于输出,尤其是浮点数的输出,一定要看下给的测试用例中输出了几位小数,如果输出精度不对,题目也是无法通过的
# 输出一位精度的float数
print("%.1f"%x)
# res=[1,2,3]格式的时候,转为标准输出格式 1 2 3
print(' '.join(str(item) for item in res))
# res=[1,2,3]格式的时候,转为标准输出格式
# 1
# 2
# 3
res = [1,2,3]
for i in res:
print(' '.join(i))
# 当得到res为[[1,2,3],[4,5,6],[7,8,9]]格式的时候,通过下列方式转为标准输出格式。
# 输出为下列格式。
# 1 2 3
# 4 5 6
# 7 8 9
for i in range(len(res)):
for j in range(len(res[i])):
ress[i][j] = str(res[i][j])
for i in res:
print(' '.join(i))