How to input 2 integers in one line in Python?
我想知道是否可以在一行标准输入中输入两个或更多整数。 在C / C++中很容易:
C++:
1 2 3 4 5 6
| #include <iostream>
int main() {
int a, b;
std::cin >> a >> b;
return 0;
} |
C:
1 2 3 4 5
| #include <stdio.h>
void main() {
int a, b;
scanf("%d%d", &a, &b);
} |
在Python中,它将无法工作:
1 2 3 4 5 6 7 8 9 10
| enedil@notebook:~$ cat script.py
#!/usr/bin/python3
a = int(input())
b = int(input())
enedil@notebook:~$ python3 script.py
3 5
Traceback (most recent call last):
File"script.py", line 2, in <module>
a = int(input())
ValueError: invalid literal for int() with base 10: '3 5' |
那怎么办呢?
-
@Asad是的,它会的。 为什么不呢?
-
@Asad你用的是什么编译器? 我有gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2。 有用。 很好。
-
@RyanHaining那里有一个空间。 我不是C专家,但除非输入35,否则我认为不行。 编辑:刚看了scanf,猜我错了。
-
@Asad它适用于空间,而不是没有空间。 自己编译并测试。
在空白处拆分输入的文本:
1
| a, b = map(int, input().split()) |
演示:
1 2 3 4 5 6
| >>> a, b = map(int, input().split())
3 5
>>> a
3
>>> b
5 |
-
+1。这是为什么map和类似函数应该保留在Python 3中的一个很好的例子。我只会在左侧添加, *rest以使其更加健壮。具有列表推导的非地图版本也是可能的,但它不是那么干净:a, b, *rest = [int(e) for e in input().split()]。
-
为什么这段代码在Python 3下无法在IDLE中运行?
-
@Macondo:IDLE并不是一个终端环境。你还没有解释它是如何不适合你的。
-
@MartijnPieters:现在我再试一次,它完美无缺!我一定做错了。非常感谢你!
-
input()在Pycharm(Python 2.7)中仍然不适用于我。将其更改为raw_input以使其正常工作。
-
@blumonkey:这个问题是关于Python 3.对于Python 2,你确实需要使用raw_input。
-
@MartijnPieters是否可以从多行获取相同的输入?像a, b = map(int, input().split("
"))这样的东西?
-
@deppfx:input()不能多行。使用循环。
-
@MartijnPieters如何在列表中使用split()函数?
-
@ShantanuDwivedi:我不确定你在问什么。 str.split()是一个字符串方法,如果你有一个字符串列表,那么你需要一个循环(在列表上显式的for循环,或列表理解)。
-
@MartijnPieters如何在循环中使用split()函数?
-
@ShantanuDwivedi:在评论中这个问题太宽泛了,因为它完全取决于你分裂的内容以及你对这些值的看法。也许您可以通过搜索Stack Overflow对此进行一些研究?这里有很多很多问题和答案。
如果您使用的是Python 2,则Martijn提供的答案不起作用。 相反,使用:
1
| a, b = map(int, raw_input().split()) |
-
对不起家伙,标签上写着"python 3"。您的代码在Python 2中有效.py3中的输入完全是来自py2的raw_input。