之前做测试笔试的时候有很长一段时间不清楚怎么从键盘获取多个值的输入,终于一时兴起将各种情况下获取输入数值的方法进行了归纳,希望对刚好看到的您有帮助。

一、输入为一个值:

需要注意:input()返回的是字符串类型,因此读取数字时需要进行类型转换

b = int(input("请输入b:"))
print(type(b),b)

运行结果: 

请输入b:2
<class 'int'> 2

二、 输入为2、3个这类比较少的可以一个个接收的数值(接收后为字符串类型):

input()结合str.split()方法

需要注意:str.split()方法返回的是列表类型

m, n = input("请输入m和n:").split(" ")
print("m和n的值分别为{0},{1},它们是字符串类型".format(m,n))

运行结果:

这里相当于字符串"1 2"经过split()方法,用" "(空格)分割后返回的是列表[‘1’, ‘2’]。其中m=1、n=2

请输入m和n:1 2
m和n的值分别为1,2,它们是字符串类型

三、 输入为2、3个这类比较少的可以一个个接收的数值(接收后为整数类型)

方法1:利用map(fun,seq)函数。下面的int可以用其他类型如float替代

m, n = map(int, input("请输入m和n:").split(" "))
print("m和n的值分别为{0},{1},它们是int整数类型".format(m,n))

运行结果:

请输入m和n:1 2
m和n的值分别为1,2,它们是int整数类型

方法2:直接利用列表推导式。下面的int可以用其他类型如float替代

m, n =[int(x) for x in input("请输入m和n:").split(" ")]
print("m和n的值分别为{0},{1},它们是int整数类型".format(m,n))

运行结果:

 请输入m和n:1 2
m和n的值分别为1,2,它们是int整数类型

四、一行n个值的输入(个数未知)

方法1: 结果为str类型

list = input("请输入:").split()  
print(type(list), list)  #<class 'list'> ['1', '2', '3']
for i in list:
    print(type(i), i)

 运行结果:

请输入:1 2 3

<class 'list'> ['1', '2', '3']
<class 'str'> 1
<class 'str'> 2 
<class 'str'> 3 

如果需要的输入为其他形式,应当在遍历的同时进行类型转换 。

方法2:结果为int类型

a = list(map(int,input("请输入:").split()))
print(type(a), a)
for i in a:
    print(type(i), i)

运行结果:

请输入:1 2 3

<class 'list'> [1, 2, 3]
<class 'int'> 1
<class 'int'> 2
<class 'int'> 3

五、已知行数的多行输入

 (1)需要的输入为字符串形式

text = ''
lines = int(input("输入行数:"))
for i in range(lines):
    text += input()
print(text) #接收的输入为字符串形式

运行结果:

输入行数:2
123
456
123456

(2) 如果需要的输入为列表形式,则可以在这个字符串基础上将这个没有逗号或空格的字符拆分:

a = list(text)
print(a)  #接收的输入为列表形式

此时结果为:

['1', '2', '3', '4', '5', '6']

(3)如果需要的输入为数字形式,则可以继续将这个列表转换为数字:

将列表中的元素转换成数字的几种方法:

方法1:使用join的方法

a = ['1', '2', '3']
b = ' '.join(a)
print(b)

输出:1 2 3

方法2:使用列表生成式进行转换

a = ['1', '2', '3']
b = [int(x) for x in a]    #此时b的结果为[1, 2, 3]
for i in b:
    print(i,end=" ")

输出:1 2 3