我在编码竞赛中尝试了这个problem。我相信我已经解决了这个问题,但是在输入时遇到了一些问题。帮助我:
输入
输入的第一行包含一个整数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
错误?我认为整个输入被视为一个字符串。
答案 0 :(得分:2)
拆分输入,使用拆分列表
提取整个过程s = raw_input()
s = s.split()
T = int(s[0])
ans=[]
for st in s[1:]:
//Do the rest
答案 1 :(得分:1)
首先拆分输入然后转换int:
T, body = raw_input().split("\n", 1)
for x in xrange(int(T)):
...
这将拆分一次并为您提供第一个数字项,然后是输入字符串的其余部分。
答案 2 :(得分: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:])
答案 3 :(得分: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