2011-03-08 58 views
-2

採取的測試用例和輸出所有輸入編號的數字,我可以做在Python 2.5EXEC在Python 3

exec"print input();"*input() 

如何做到這一點在Python 3以下,在最短的方法是什麼?

+0

下投票你爲什麼需要Exec的? – 2011-03-08 20:20:00

+2

-1「儘可能最短的路線」是代碼高爾夫,並且是錯誤的,除非你有特定的和非常好的理由。它應該是*最清晰的*可能的方式。 – 2011-09-28 09:43:46

回答

3

混淆的代碼在Python 3工作得很好過,一旦你已經適應了變化,這可以平凡通過2to3的運行代碼來完成。

exec("print(input());"*eval(input())) 

顯然(儘管EVAL應該在這種情況下,可以用int()函數因爲這是你想要的東西代替。) ,這是所有ridicolous,你爲什麼要使用字符串,而不是循環的exec和乘法?

for ignored in range(int(input())): 
    print(input()) 

你也可以用列表表達做到這一點:

[print(input()) for _ in range(int(input()))] 

雖然大多數人會說(我同意),使用列表中的表達式爲它的副作用或循環一般是不好的形式。列表表達式應​​該用來創建列表。

這是一塊清晰,自我記錄代碼,不會是相同的:

num_integers = int(input('How many integers do you want to input? ')) 
for x in range(num_integers): 
    print(input('Integer {}: '.format(x))) 
1

execprint一樣,是Python 3中的一個函數調用。將該字符串包裝在圓括號中。

+0

我知道這一點。我需要關於'* input()'部分的幫助。 – fR0DDY 2011-03-08 17:26:29

2

有沒有理由不能使用循環?

for _ in xrange(input()): 
    print input()