0

我正在编码比赛中尝试这个问题。我相信我已经解决了这个问题,但是在接受输入时遇到了一些问题。帮帮我:


输入

输入的第一行包含一个整数 T,表示测试用例的数量。T 测试用例的描述如下。每个测试用例由一行组成,其中包含两个以空格分隔的字符串 R 和 S,表示两个配方。


现在,我已经对问题进行了编码,它似乎可以工作,但是每当我直接复制粘贴输入值时,它都会通过给出此错误消息而无法工作


T= int(raw_input())
ValueError: invalid literal for int() with base 10:
'3\nalex axle\nparadise diapers\nalice bob'

每当我尝试提交问题时,都会收到一条错误消息。可能他们也在复制粘贴输入值并检查输出。我的代码骨架是这样的


def whetherGranama(str1,str2):
    return "NO"
    #can't give the implementation out yet

T= int(raw_input())
ans=[]
for x in range(0,T):
    s=raw_input()
    s1,s2=s.split()
    ans.append(whetherGranama(s1,s2))

for elem in ans:
    print elem

如何修复\n错误?我认为整个输入被视为一个字符串。

4

4 回答 4

2

拆分输入,使用拆分列表提取整数过程

s = raw_input()
s = s.split()
T = int(s[0])

ans=[]

for st in s[1:]:
//Do the rest 
于 2012-12-02T06:49:10.533 回答
1

首先拆分您的输入,然后转换 int:

T, body = raw_input().split("\n", 1)
for x in xrange(int(T)):
   ...

这将拆分一次并为您提供第一个数字项,然后是输入字符串的其余部分。

于 2012-12-02T06:47:55.573 回答
1

如果将整个输入作为一个字符串读入,您可以尝试使用stdin.readline()而不是raw_input捕获输入流:

from sys import stdin
T = int(stdin.readline())

然而,由于这是一场编码比赛,我假设速度至关重要。由于 IO 操作的计算成本很高,因此您实际上应该欢迎有机会一次读取所有输入。换句话说,一次读取所有内容然后解析代码中的输入通常会更快。我想在你的情况下,它看起来像这样(假设它是按设计一次性出现的):

data = raw_input().splitlines() 
#(or data = sys.stdin.read().splitlines() or data = list(sys.stdin.readlines()))

T = int(data[0])
S = (s.split() for s in data[1:])
于 2012-12-02T06:48:42.263 回答
1

是的,整个字符串被视为一个输入。您可以简单地将输入存储为列表并使用列表而不是raw_input在循环中调用,这看起来像这样:

def whetherGranama(str1,str2):
    return "NO"
    #can't give the implementation out yet

input_lines = raw_input().split("\n")
T = int(input_lines[0])
ans=[]
for x in range(1,T):
    s = input_lines[x]
    s1,s2=s.split()
    ans.append(whetherGranama(s1,s2))

for elem in ans:
    print elem
于 2012-12-02T06:50:11.177 回答