2012-05-28 69 views
0

我有下面的Python 2.7.3的代碼,我提交給codechef在線編程競賽:爲什麼不是輸入()表現正確?

case = input() 
for i in xrange(0, case): 
    try: 
     l = [elem for elem in raw_input().split()] 
     res = int(l[0][::-1]) + int(l[1][::-1]) 
     print int(str(res)[::-1]) 
    except: 
     break 

此作品在我的電腦上,甚至當我使用的輸入重定向和使用in.txt文件對於輸入,它仍然有效。

但問題是,當我將其提交評價,我得到一個異常,該異常被刪除時,我的raw_input使用用於獲取案值

case = int(raw_input()) 

我in.txt文件如下:

1 
23 45 

我的問題是,它的工作在我的電腦上完美的,它是什麼,在線競賽網站,在該異常被提出的1號線料,並進一步將其得到糾正,當我使用的raw_input。

不應該輸入()也工作時,我的第一行始終是一個整數?

+1

什麼是例外? – geoffspear

+0

該網站並沒有告訴我,雖然它使用raw_input糾正。 –

+0

比賽使用什麼版本的Python? – Levon

回答

2

最有可能的是,您提交的代碼禁用input命令的網站。有時這是作爲「沙盒」的一部分完成的,以防止你在他們的機器上運行任意代碼。例如,他們不希望讓你運行一個腳本來刪除磁盤上的所有文件。

input命令或多或少等價於運行eval(raw_input()),並且eval可用於執行任何操作。

你說你得到一個異常。究竟是什麼樣的異常,什麼是異常消息?

+0

我得到一個NZEC運行時錯誤,並在他們的網站上解釋如下:**爲什麼我會得到一個NZEC? NZEC代表非零退出代碼。對於C用戶,如果你的main方法沒有返回0,將會產生這個;聲明。其他語言如Java/C++如果拋出異常,可能會產生此錯誤。** –

+0

因此,您看到它對其他語言說它是由於異常,但它不會告訴異常消息。 –

+0

嘗試提交以下其中一個作爲您的完整程序,並查看您是否得到類似的錯誤:'eval(「1 + 2」)'或者'input()';或者,如果它允許你看到控制檯輸出(stout),那麼將所有內容都包含在'try'中,除了捕獲和打印異常外。 –

相關問題