Python不识别/n换行符 执行拼接的多行输入代码报错如何解决
问题原因
- 你代码中用于拼接的
/n是普通字符序列,并非Python识别的换行转义符,Python的换行转义符为反斜杠开头的\n。这就导致拼接后的代码没有真正换行,/n被直接嵌入代码语句中,触发语法错误。 - 报错日志中
while True:/n print('a')的内容也验证了该问题:/n没有被解析为换行,而是成为了while语句的一部分,不符合Python语法规范。
修复方法
直接将拼接语句中的正斜杠替换为反斜杠即可,修改对应代码行:
# 错误写法 exec('/n'.join(instlist)) # 修正后写法 exec('\n'.join(instlist))
如果需要兼容Windows平台的换行格式,也可以写为exec('\r\n'.join(instlist)),常规场景下\n已经可以被Python正确解析。
可选优化
你可以同步优化代码的冗余逻辑,优化后完整参考代码如下:
def main(): opt = setup() # 优化判断逻辑,不用写两个等值判断 if opt.lower() == 'y': instlist = [] # 简化循环结构,不用提前初始化inst变量 while True: inst = input('Enter codeline to execute, when done type "end"') if inst == 'end': break instlist.append(inst) exec('\n'.join(instlist)) input()
注意:exec执行用户任意输入的代码存在极高安全风险,仅限本地测试场景使用,禁止在公开可访问的服务中引入该逻辑。
内容的提问来源于stack exchange,提问作者intermediate coder
相关产品推荐
相关产品推荐

