无法在python中使用int(raw_input())

时间:2012-12-02 06:36:06

标签: python

我在编码竞赛中尝试了这个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错误?我认为整个输入被视为一个字符串。

4 个答案:

答案 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