繁体   English   中英

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

[英]Unable to use int(raw_input()) in python

我正在编码竞赛中尝试这个问题 我相信我已经解决了问题,但在接受意见时遇到了一些问题。 在这里帮助我:


输入

输入的第一行包含一个整数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错误? 我认为整个输入被视为一个字符串。

分割输入,使用分割列表提取整数

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

ans=[]

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

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

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

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

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

是的,整个字符串被视为一个输入。 您可以简单地将输入存储为列表并使用该列表,而不是在循环中调用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM