用于多个值的Python STDIN

用于多个值的Python STDIN,python,python-2.7,Python,Python 2.7,您好,我无法使用以下代码从stdin输入两个数字,因为我还不太熟悉此功能,当我手动输入数字时,代码似乎工作正常,但我无法让sys.stdin.readline正常工作 import sys def k(upto): def collatz(n): if n < upto and lst[n] > 0: return lst[n] if n % 2 == 0: val = collatz(n/2)

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

import sys

def k(upto):
    def collatz(n):
        if n < upto and lst[n] > 0:
            return lst[n]
        if n % 2 == 0:
            val = collatz(n/2) + 1
        else:
            val = collatz((3*n + 1)/2) + 2
        if n < upto:
            lst[n] = val
        return val

    lst = [0]*upto
    lst[1] = 1
    lst[0] = 1
    for i in range(mini,upto):
        collatz(i)
    return max(lst)

line=int(sys.stdin.readline())
maxi = max(line)
mini = min(line)
print k(maxi)
导入系统 def k(高达): def collatz(n): 如果n0: 返回lst[n] 如果n%2==0: 瓦尔=科拉兹(n/2)+1 其他: val=collatz((3*n+1)/2)+2 如果n小于或等于: lst[n]=val 返回值 lst=[0]*最多 lst[1]=1 lst[0]=1 对于范围内的i(最小,最大): 科拉茨(一) 返回最大值(lst) line=int(sys.stdin.readline()) 最大值=最大值(直线) 最小值=最小值(行) 打印k(最大值) 代码生成以下错误:TypeError:“int”对象不可编辑。任何协助都将不胜感激

编辑:::应该提到只有两个数字将被输入,每行一个。

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

如果你每行读一个,你的代码就相当接近了——除了你只读一行:你的变量
line
只有一个数字——因此
min
max
不能工作

你可以这样做

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


旧版本:

输入是什么?整数列表,例如
2 3 5
?这将被解释为字符串
“2 3 5”
。要将其转换为整数,必须执行以下操作

i1 = int(raw_input("Enter first number: "))
i2 = int(raw_input("Enter second number: "))
maxi = max(i1, i2)
mini = min(i1, i2)
...
line=[sys.stdin.readline()

这个 -将()输入拆分为字符串数组
[“2”、“3”、“5”]
,然后
-将
int()
转换应用于数组的每个元素

看了你的评论后,看起来你想要这样的东西

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

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

,似乎方向正确,每行只输入两个数字。这会有所不同吗?不,没关系。对于您拥有的其他代码,这将起作用。它实际上也应该适用于更多的数字。(另一方面,对于实际代码,您必须检查只有两个条目,并且它们都可以转换为int)。如果你相信你的用户只输入两个数值,@wim的
mini,maxi=sorted(…)
技巧很酷。这样做只会给我第一个数字,因为第二个数字似乎不存在,应该更清楚这两个数字是在像这样分开的行中输入的。1 5