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

2024-09-25 00:35:48 发布

您现在位置: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错误?我认为整个输入被看作一个字符串。


Tags: 字符串in消息编码forinputraw错误
3条回答

首先分割输入,然后转换int:

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

它将被拆分一次,给您第一个数字项,然后给您输入字符串的其余部分。

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

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

ans=[]

for st in s[1:]:
//Do the rest 

如果将整个输入作为一个字符串读取,则可以尝试使用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:])

相关问题 更多 >