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

2024-04-20 12:48:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图解决一个编程问题,包括为上传的配置文件pic返回一个布尔值,将其分辨率与我提供的作为输入的分辨率匹配,并返回一个我在下面描述的语句。这是一个给我带来错误的测试用例:

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是我在这里避免描述的函数,以防止文章变得太长。但我编写的方法是,width和height参数都与dim进行比较,并返回一个输出。问题在于读那些台词。用不同的分隔符读这些行的最佳方法是什么?你知道吗


Tags: forinputreadlinestdinstdout分辨率测试用例out
3条回答

而不是:

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

您可以尝试:

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

然后你得到

in2 = [640, 480]

你在给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)

你可以试试这个,它在python3.x中 dimention=int(input()) t=int(input()) for i in range(t): a=list(map(int,input().split()))

相关问题 更多 >