2011-03-08 31 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()