Python中如何实现Java中的nextInt()和hasNext()?

4 投票
4 回答
23174 浏览
提问于 2025-04-17 02:09

我有一个输入文件

1 2
10 2
81 3
23 6
2537857295 19
34271891003654321 1267253

我这样读取这个文件

with open("powersearch.txt") as fileIn:
    for line in fileIn:
        print line

我在想,如果我想把每一行的第一个整数存储为 firstNum,第二个整数存储为 secondNum,在Java中我可以用 scannernextInt()hasNext() 来获取这些整数,那么在Python中有什么类似的方式呢?

4 个回答

3

编辑 - nightcracker 的解决方案现在几乎是等价的。

(我假设你在使用 Python 2.x 而不是 3.x,因为从语法上看是这样的。)

这主要是个人喜好,不过我更喜欢 S.Lott 和 nightcracker 的解决方案结合起来:

with open("powersearch.txt") as fileIn:
    for line in fileIn:
        firstNum, secondNum = [int(s) for s in line.split()]
        print firstNum, secondNum

对我来说,列表推导式比 map 更容易阅读。解构赋值让我们可以同时把两个元素的值赋给两个不同的局部变量。

6

请忽略那些关于Java的想法。它们只会让你更加困惑。

Python是一种不同的编程语言,你需要学习Python特有的写法和思维方式。

下面是一个例子。

with open("powersearch.txt") as fileIn:
    for firstNum, secondNum in ( map(int, line.split()) for line in fileIn ):
        print firstNum, secondNum
6

要从一个字符串中提取整数,你只需要用 int(s),其中 s 就是那个字符串。

在你的例子中,我觉得这就是最合逻辑的方法:

with open("powersearch.txt") as fileIn:
    for line in fileIn:
        n1, n2 = (int(s) for s in line.split())
        print(n1, n2)

Python和Java是不同的编程语言,我觉得Python更灵活(我可以在一行代码中做更多事情,而且代码依然容易理解)。如果你试着在Python中写Java的代码,你会发现Python的效果没有它本来那么好。

撰写回答