问题描述
要获取测试用例的数量并输出所有输入的数量,我可以在Python 2.5中执行以下操作
exec"print input();"*input()
如何在Python 3中以最短的方式做到这一点?
1楼
一旦适应了更改,经过混淆的代码在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)))
2楼
您有不能使用循环的原因吗?
for _ in xrange(input()):
print input()
3楼
exec
和print
一样,是Python 3中的函数调用。将字符串用括号括起来。