为什么会出现"无效的文字错误"?

时间:2014-09-09 17:04:09

标签: python

我在IDE中得到了正确的答案,但在线裁判给出了以下错误:

Traceback (most recent call last):
  File "/tmp/editor_trsource_1410281976_804149.py", line 10, in 
    n=int(raw_input(''))
ValueError: invalid literal for int() with base 10: '100 10'

问题链接:http://www.hackerearth.com/problem/golf/minimal-combinatorial/

def fact(x):
    f=1
    while x>0:
        f=f*x
        x-=1
    return f
T=int(raw_input(''))
while T>0:
    n=int(raw_input(''))
    r=int(raw_input(''))
    ans=fact(n)/(fact(r)*fact(n-r))
    print str(ans) + "\n"

    T-=1

2 个答案:

答案 0 :(得分:6)

nr将在同一行输入。

100 10

您的程序希望它们分两行输入。

100
10

答案 1 :(得分:0)

正如@John Kugelman已经指出的那样,你的程序希望n和r在同一条线上。最好使用sys模块读取输入。它会像这样工作:

import sys

def fact(x):
    f=1
    while x>0:
        f=f*x
        x-=1
    return f

T=int(sys.stdin.readline().strip())

while T>0:

    nr = map(int, sys.stdin.readline().strip().split())
    #Or you can use nr directly while computing ans
    n = nr[0]
    r = nr[1]
    ans=fact(n)/(fact(r)*fact(n-r))
    print str(ans) + "\n"

    T-=1

示例运行:

$ python fact.py 
1  
5 2
10

希望这有帮助!