在Python 3中使用exec
为了获取测试用例的数量并输出所有输入的数字,我可以在Python 2.5中这样做:
exec"print input();"*input()
那么在Python 3中,怎么用最简单的方法做到这一点呢?
3 个回答
1
exec
和print
一样,都是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)))