说我想通过0
打印9
。
我输入for i in range(10): print(i)
,按输入,终端显示...
,等待进一步的陈述。
所以我必须再次按输入才能打印数字。
>>> for i in range(10): print(i)
...
如何在不必按两次输入的情况下打印数字?
答案 0 :(得分:11)
只需键入两个返回并继续。但是,既然你问,这只需要一个 Enter :
exec("for i in range(10): print(i)")
答案 1 :(得分:0)
答案 2 :(得分:0)
将for循环转换为所谓的 list理解力(您不需要eval
/ exec
并将整个内容包装为当前字符串最佳答案建议):
In [1]: [i for i in range(3)]
Out[1]: [0, 1, 2]
如果要多行显示,也可以保留print()
语句,但是返回值(None
)将放入返回的数组中,因此您将获得以下信息:
In [2]: [print(i) for i in range(3)]
0
1
2
Out[2]: [None, None, None]
要隐藏该最终输出行,您可以add a semicolon:
In [3]: [print(i) for i in range(3)];
0
1
2
ipython3
太多了,但也许更有用的是,命令行用法呢?您无法执行python3 -c 'import sys; for line in sys.stdin: print(line)'
,但是您可以 使用列表推导:
$ python3 -c '[print(i) for i in range(3)]'
0
1
2
因此,如果您想在每行上运行一些python:
$ cat inputfile
two
examples
$ cat inputfile | python3 -c 'import sys; [print(line.strip().upper()) for line in sys.stdin]'
TWO
EXAMPLES
(您可以将cat infile |
替换为<infile
,但这对于不熟悉Bash语法的人来说似乎更容易实现,而熟悉的人可以轻松地替换它。)
答案 3 :(得分:0)
你可以在不使用 exec() 的情况下执行 for 语句,方法是按 Enter 转到下一行,然后按 ctrl + d
答案 4 :(得分:-1)
“ alt + enter” 我在ipython中工作,面临与您相同的问题。在尝试了键盘上的各种组合后,这一组合终于奏效了