Python STDIN用于多个值

时间:2019-02-01 20:20:44

标签: python python-2.7

您好,由于我不太熟悉此功能,我无法使用以下代码从stdin输入两个数字,当我手动输入数字时,代码似乎可以正常工作,但无法获取sys.stdin.readline正常工作。

{{1}}

该代码产生以下错误:TypeError:'int'对象不可迭代。任何帮助将不胜感激。

编辑:::应该提到的是,将仅输入两个数字,每行一个。

3 个答案:

答案 0 :(得分:0)

您需要将它们从行中拆分。此外,在这里使用raw_inputsys.stdin.readline更规范。像这样:

>>> s = raw_input("enter two numbers: ")
enter two numbers: 123 456
>>> s
'123 456'
>>> mini, maxi = sorted([int(x) for x in s.split()])
>>> mini
123
>>> maxi
456

要持续提示直到输入了正好两个数字的有效答案,请查看以下相关问题+答案:Asking the user for input until they give a valid response

答案 1 :(得分:0)

“每行一个”是重要信息:)

如果您每行只读取一行,则代码非常接近-除了只读取一行:变量line仅是一个数字-因此min和{{1 }}无法正常工作。

您可以做类似的事情

max

注意:如果切换到Python 3(推荐),它是i1 = int(raw_input("Enter first number: ")) i2 = int(raw_input("Enter second number: ")) maxi = max(i1, i2) mini = min(i1, i2) ... 而不是input()


旧版本:

什么是输入?整数列表,例如raw_input()?这将被解释为字符串2 3 5。要将其转换为整数,您必须执行类似的操作

"2 3 5"

这 -将输入拆分()到字符串line = [int(i) for i in sys.stdin.readline().split()]的数组中,然后 -将["2", "3", "5"]转换应用于数组的每个元素。

答案 2 :(得分:0)

阅读您的评论之后,它看起来像你想是这样的。

line = list()
for x in range(2):
    line.append(int(sys.stdin.readline()))

这将从STDIN读取2行,将每行转换为int,并将每个值附加到line