正在读取用空格分隔的int对象的输入行?

时间:2018-07-29 06:29:03

标签: python io

我正在尝试解决一个编程问题,该问题涉及为上传的个人资料图片返回布尔值,将其分辨率与我作为输入提供的分辨率相匹配,并返回下面将描述的语句。这是一个这样的测试用例,它给了我错误:

180
3
640 480      CROP IT
320 200      UPLOAD ANOTHER
180 180      ACCEPTED

第一行读取需要匹配的维度,第二行代表测试用例的数量,其余部分包含带有空格分隔符的分辨率。对于每种分辨率,需要打印每行显示的输出。

我已经尝试过了,因为这是我能想到的最自然的东西,并且对Python I / O来说是很新的东西:

from sys import stdin, stdout

dim = int(input())
n = int(input())
out = ''

for cases in range(0, n):
    in1 = int(stdin.readline().rstrip('\s'))
    in2 = int(stdin.readline().rstrip('\s'))

    out += str(prof_pic(in1, in2, dim))+'\n'

stdout.write(out)
ValueError: invalid literal for int() with base 10 : '640 480\n'

prof_pic是我在此不介绍的功能,以防止发布时间过长。但是我以这样的方式编写宽度和高度参数都与dim进行比较并返回输出。问题在于读取这些行。用不同的分隔符读取此类行的最佳方法是什么?

3 个答案:

答案 0 :(得分:1)

您可以尝试使用python 3.x dimention=int(input()) t=int(input()) for i in range(t): a=list(map(int,input().split()))

答案 1 :(得分:1)

代替:

in2 = int(stdin.readline().rstrip('\s'))

您可以尝试:

in2 = map( int, stdin.readline().split()[:2])

你会得到

in2 = [640, 480]

答案 2 :(得分:1)

您正在呼叫readline。顾名思义,这是一整行。 (如果不确定所得到的是什么,则应尝试print将其删除。)因此,您将得到如下内容:

640 480      CROP IT

您不能为此打int

您要做的是split,将其分成几部分,如下所示:

['640', '480', 'CROP IT']

例如:

line = stdin.readline().rstrip('\s')
in1, in2, rest = line.split(None, 2)

现在您可以将前两个转换为整数:

in1 = int(in1)
in2 = int(in2)