I am familiar with the input() function, to read a single variable from user input. Is there a similar easy way to read two variables?
I'm looking for the equivalent of:
scanf("%d%d", &i, &j); // accepts "10 20\n"
One way I am able to achieve this is to use raw_input()
and then split
what was entered. Is there a more elegant way?
This is not for live use. Just for learning..
不,通常的方式是raw_input().split()
你的情况您可以使用map(int, raw_input().split())
如果你想他们是整数,而不是字符串
不要使用input()
了点。 考虑会发生什么,如果用户输入
import os;os.system('do something bad')
您还可以从sys.stdin阅读
import sys
a,b = map(int,sys.stdin.readline().split())
我在这个东西是新的为好。 做了一些从python.org网站研究了一下黑客得到这个工作。 该功能的raw_input是回来了,从输入更改。 这是我想出了:
i,j = raw_input("Enter two values: ").split
i = int(i)
j = int(j)
诚然,代码不是如用C的scanf或C ++的CIN的单行优雅。 Python的代码看起来更接近的Java(其从C,C ++或Python采用了完全不同的机制),以使得每一个变量需要分开处理。
在Python里,raw_input函数获取字符关闭控制台,并将它们连接成一个字符串作为它的输出。 当只有一个变量赋值运算符的左手侧发现, 分割功能打破这个字符串转换成String值的列表 。
在我们的例子中,一个我们期望两个变量,我们可以得到使用他们的标识符的逗号分隔列表到它们的值。 字符串值,然后会被分配到列出的变量。 如果我们想要做算术与这些价值,我们需要将它们转换成使用Python的内置整数或浮点数功能数字INT(或浮动 )数据类型。
我知道这个记录将一个很老的帖子的回复也可能是知识已经赫然出现了“常识”了一段时间。 不过,我会欣赏的发布像这样的,而不是我不必花搜索和黑客攻击,直到我想出了什么,我觉得几个小时的是,可以在教室里CS1呈现最完美的解决方案。
首先阅读完整的行成像绳子
string = raw_input()
然后使用一个像这样循环
prev = 0
lst = []
index = 0
for letter in string :
if item == ' ' or item == '\n' :
lst.append(int(string[prev:index])
prev = index + 1
这个循环需要一个完整的线输入字符串,并以它单独处理的部分,然后追加号码列表 - 把它们转换成整数之后LST。
您还可以使用任意数量的输入此方法。 考虑用空格分开的三个输入以下内容:
import sys
S = sys.stdin.read()
S = S.split()
S = [int(i) for i in S]
l = S[0]
r = S[1]
k = S[2]
或者你可以这样做
input_user=map(int,raw_input().strip().split(" "))
你可以在Python 3.6.1使用该读2个INT值
n,m = map(int,input().strip().split(" "))