我正在尝试创建一个函数,该函数将使用STDIN从列表中返回一个范围内的数字子列表(从头到尾)。
但是,我遇到了两个问题,由于需要使用整数列表,因此似乎无法解决它们。这是我要实现的代码。
import sys
def algo(list1, xs, xf):
for x in list1:
if x>=xs or x<=xf:
print(x)
list1 = sys.stdin.readline().strip().split(" ")
xs = sys.stdin.readline().strip().split(" ")
xf = sys.stdin.readline().strip().split(" ")
algo(list1, xs, xf)
使用此方法并使用输入1 2 3 40 50 90 100,开始为3,结束为100,我得到
TypeError: '>=' not supported between instances of 'str' and 'list'
如果我将所有标准输入都设为int(),如
list1 = sys.stdin.readline().strip().split(" ")
xs = int(sys.stdin.readline().strip().split(" "))
xf = int(sys.stdin.readline().strip().split(" "))
我仍然得到
TypeError: int() argument must be a string, a bytes-like object or a number, not 'list'
因此,我无法将列表转换为int。但是我需要在我的应用程序中使用stdin。我该如何解决这个问题?
答案 0 :(得分:0)
我想出了一个简单的例子来帮助您入门。它可能需要一些调整。见下文:
lastValue = -1
for x in list1:
for y in xs:
for z in xf:
if x != lastValue and (x >= y or x <= z):
print(x)
lastValue = x
您的问题是您根本没有遍历列表xs
或xf
。嵌套循环应该可以解决问题,否则您将无法将list1
中的每个值与xs
或xf
中的每个值进行比较。
我正在使用lastValue
变量以避免打印任何重复项。此示例假定我所有列表都包含整数,您可能需要将x
,y
和z
强制转换为int
才能使用您的代码。