在Python 3中使用exec

-1 投票
3 回答
2099 浏览
提问于 2025-04-16 13:16

为了获取测试用例的数量并输出所有输入的数字,我可以在Python 2.5中这样做:

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

那么在Python 3中,怎么用最简单的方法做到这一点呢?

3 个回答

1

execprint一样,都是Python 3中的函数调用。使用时要把字符串放在括号里。

2

你有没有想过为什么不能用循环呢?

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

你的混淆代码在Python 3中也能正常工作,只要你做一些适应性的调整,这个调整可以通过运行2to3工具轻松完成。

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

(不过在这种情况下,eval应该换成int(),因为你想要的是这个。)显然,这一切都很荒谬,为什么你要用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)))

撰写回答