为什么这个oneliner给我语法错误?

时间:2019-07-19 15:50:58

标签: python

import random;  while True: print (random.randrange (1, 100 + 1, 2))

我正在尝试生成无限数量的奇数,范围为1-100

1 个答案:

答案 0 :(得分:1)

分号不能用于连接任意语句,只能用于“小”语句:

stmt: simple_stmt | compound_stmt
simple_stmt: small_stmt (';' small_stmt)* [';'] NEWLINE
small_stmt: (expr_stmt | del_stmt | pass_stmt | flow_stmt |
             import_stmt | global_stmt | nonlocal_stmt | assert_stmt)

(粗略地说)一条小语句是不涉及缩进的任何语句。

相反,您需要使用文字换行符分隔导入和循环。如果您的外壳支持它,则可以使用

python -c $'import random\nwhile ...'

否则,您需要放宽对“单线”的定义:

python -c 'import random
while ...
'