您好,由于我不太熟悉此功能,我无法使用以下代码从stdin输入两个数字,当我手动输入数字时,代码似乎可以正常工作,但无法获取sys.stdin.readline正常工作。
{{1}}
该代码产生以下错误:TypeError:'int'对象不可迭代。任何帮助将不胜感激。
编辑:::应该提到的是,将仅输入两个数字,每行一个。
答案 0 :(得分:0)
您需要将它们从行中拆分。此外,在这里使用raw_input
比sys.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
。