python中一个输入的两个值?

时间:2009-06-07 05:27:54

标签: python variables input

这是一个简单的问题,我不想在这里问它,但我似乎无法在其他任何地方找到答案:是否有可能在一行Python中从用户那里获得多个值?

例如,在C中,我可以这样做:scanf("%d %d", &var1, &var2)。但是,我无法弄清楚Python的等价物是什么。我认为它只是var1, var2 = input("Enter two numbers here: ")之类的东西,但是这不起作用而且我没有抱怨,因为如果它做的话就不会有很多意义。

有没有人知道一个优雅而简洁的方法吗?

18 个答案:

答案 0 :(得分:54)

Python的映射方式

printf("Enter two numbers here: ");
scanf("%d %d", &var1, &var2)

将是

var1, var2 = raw_input("Enter two numbers here: ").split()

请注意,我们不必显式指定split(' '),因为split()使用任何空格字符作为默认分隔符。这意味着如果我们只是简单地调用split(),那么用户可以使用制表符分隔数字,如果他真的想要,还有空格。

Python具有动态类型,因此无需指定%d。但是,如果您运行上述内容,那么var1var2将是两个字符串。您可以使用其他线路将其转换为int

var1, var2 = [int(var1), int(var2)]

或者你可以使用 list comprehension

var1, var2 = [int(x) for x in [var1, var2]]

总结一下,你可以用这个单行完成整个事情:

# Python 3
var1, var2 = [int(x) for x in input("Enter two numbers here: ").split()]

# Python 2
var1, var2 = [int(x) for x in raw_input("Enter two numbers here: ").split()]

答案 1 :(得分:10)

你不能真的以C方式(我认为)这样做,但是这样做的pythonic方法是(如果你的'输入'在它们之间有空格):

raw_answer = raw_input()
answers = raw_answer.split(' ') # list of 'answers'

所以你可以改写你的尝试:

var1, var2 = raw_input("enter two numbers:").split(' ')

请注意,这比使用“第一个”解决方案稍微灵活一些(例如,如果你在最后添加一个空格,这将会破坏)。

还要注意,当不转换为int时,var1和var2仍然是使用此方法的字符串。

答案 2 :(得分:8)

Python 2.*中,input允许用户输入任何表达式,例如一个元组:

>>> a, b = input('Two numbers please (with a comma in between): ')
Two numbers please (with a comma in between): 23, 45
>>> print a, b
23 45

Python 3.*中,input就像2.*的{​​{1}}一样,为您返回一个字符串,该字符串就是用户输入的内容(而不是raw_input正如eval2.*所做的那样,所以你必须input,和/或.split,& c但你也会更多控制整件事。

答案 3 :(得分:6)

如果你需要取两个整数说a,b在python中你可以使用map函数 假设输入是,

1
5 3
1 2 3 4 5

其中1表示测试用例,5表示值的数量,3表示任务值,在给定5个值的下一行中,我们可以在PYTH 2.x版本中使用此方法进行此类输入。

testCases=int(raw_input())
number, taskValue = map(int, raw_input().split())
array = map(int, raw_input().split())

您可以将map()中的'int'替换为所需的其他数据类型。

答案 4 :(得分:3)

所有输入都将通过字符串。收到后,您可以自行处理该字符串。除非是这样,否则您使用eval(input())方法,但不建议在大多数情况下使用该方法。

input_string = raw_input("Enter 2 numbers here: ")
a, b = split_string_into_numbers(input_string)
do_stuff(a, b)

答案 5 :(得分:3)

您必须使用split()方法将输入分成两个不同的输入。无论你进入分割中的是什么,都要查找并从那里分割输入。在大多数情况下,它是白色空间。

例如,您输入23 24 25。您期望有3种不同的输入,例如

num1 = 23
num2 = 24
num3 = 25

所以在Python中,你可以做到

num1,num2,num3 = input().split(" ")

答案 6 :(得分:2)

我找到的解决方案如下:

要求用户输入两个以逗号或其他字符分隔的数字

value = input("Enter 2 numbers (separated by a comma): ")

然后,字符串被拆分:n取第一个值m取第二个值

n,m = value.split(',')

最后,要将它们用作整数,必须将它们转换为

n, m = int(n), int(m)

答案 7 :(得分:2)

检查这个方便的功能:

def gets(*types):
    return tuple([types[i](val) for i, val in enumerate(raw_input().split(' '))])

# usage:
a, b, c = gets(int, float, str)

答案 8 :(得分:1)

我找到的最简单的方法是使用带输入的分割功能 就像你有两个变量a,b

a,b=input("Enter two numbers").split()

就是这样。 还有一种方法(显式方法) 例如 - 你想要输入三个值

value=input("Enter the line")
a,b,c=value.split()

很容易..

答案 9 :(得分:1)

这是一个示例代码,用于将由split命令和分隔符分隔的两个输入作为“,”

>>> var1, var2 = input("enter two numbers:").split(',')
>>>enter two numbers:2,3
>>> var1
'2'
>>> var2
'3'

可以使用的分隔符的其他变体如下:
var1, var2 = input("enter two numbers:").split(',')
var1, var2 = input("enter two numbers:").split(';')
var1, var2 = input("enter two numbers:").split('/')
var1, var2 = input("enter two numbers:").split(' ')
var1, var2 = input("enter two numbers:").split('~')

答案 10 :(得分:1)

对于n个输入,将变量声明为空列表,并使用相同的语法进行操作:

>>> x=input('Enter value of a and b').split(",")
Enter value of a and b
1,2,3,4
>>> x
['1', '2', '3', '4']

答案 11 :(得分:0)

a,b=[int(x) for x in input().split()]
print(a,b)

输出

  

10 8

10 8

答案 12 :(得分:0)

在Python 3中,raw_input()重命名为input()

input([prompt])
  

如果存在提示参数,则将其写入标准输出   没有尾随换行符。然后该函数从输入中读取一行,   将其转换为字符串(带尾随换行符),然后返回   那。读取EOF时,会引发EOFError。

所以您可以这样做

x, y = input('Enter two numbers separating by a space: ').split();
print(int(x) + int(y))

如果不使用空格放置两个数字,则会出现ValueError异常。所以这很好。

如果您需要使用input()的旧行为,请使用eval(input())

答案 13 :(得分:0)

我在Python 3中尝试过,似乎可以正常工作。

<input class="dynamicurl" />

$.validator.addMethod("dynamicurl", function(value, element) {
  return $.validator.methods.remote.call(this, value, element, "http://yoururl/validationService/"+value);
}, $.validator.messages.remote);
  

输入:3 44

     

输出:

     

3

     

44

答案 14 :(得分:0)

两个输入之间用空格隔开:

x,y=input().split()

答案 15 :(得分:0)

此解决方案用于将多个字符串(例如“ 22 44 112 2 34”)转换为整数列表,您可以访问列表中的值。

n = input("") # Like : "22 343 455 54445 22332"

if n[:-1] != " ":
n += " "

char = ""
list = []

for i in n :
    if i != " ":
        char += i
    elif i == " ":
        list.append(int(char))
        char = ""

print(list) # Be happy :))))

答案 16 :(得分:0)

您可以这样做

a, b = map(int, input().split())

OR

a, b = input().split()
print(int(a))

OR

MyList = list(map(int, input().split()))
a = MyList[0]
b = MyList[1]

答案 17 :(得分:0)

如果我们要在一行中输入两个输入,则代码如下enter code here

x,y=input().split(" ")

print(x,y)

在将值作为输入后,由于split(“”))函数或方法,我们必须在它们之间留出空格。

但是这些值是字符串类型,如果要执行一些算术运算,我们必须转换x,y的类型如下 int(x),int(y)

我们也可以借助python中的list来做到这一点。enter code here

list1=list(map(int,input().split()))
print(list1)

此列表给出了int类型的元素