“意外缩进”错误的解决方法是什么?
In [15]: def f(x):
...: return x
...:
In [16]: for i in range (10):
...: exec(f"""
...: v_{i} = f(i)
...: """)
不要使用
v_{i}
作业缩进该行。
In [16]: for i in range (10):
...: exec(f"""
...: v_{i} = f(i)
...: """)
exec()
执行的代码不会继承调用代码的缩进。因此该语句需要位于行的开头,因为您没有执行循环。
首先实际上并不需要多行字符串,您可以这样做:
exec(f'v_{i} = f(i)')
当然,这整件事都是误导的。动态变量名通常是一个坏主意,您应该使用列表或字典。
您可以通过重写您调用的 exec 函数的参数以仅跨越一行而不是多行来修复缩进错误。
看起来您正在使用
exec
创建 10 个变量并将 f(0) 的值分配给 f(9)。
exec
块需要相对于 for
循环向右缩进一级。
def f(x):
return x
for i in range(10):
exec(f"""
v_{i} = f(i)
""")