用于多个值的Python STDIN
您好,我无法使用以下代码从stdin输入两个数字,因为我还不太熟悉此功能,当我手动输入数字时,代码似乎工作正常,但我无法让sys.stdin.readline正常工作用于多个值的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)
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):
如果nline
只有一个数字——因此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