为什么 VScode python 终端和交互式 window 之间的输出不同?

Why outputs differ between VScode python terminal & Interactive window?

我在 VScode 上运行这段代码:

a = input("a : ")
b = int(a) + 2
print(f"a:{a},b:{b}")

Python终端上的输出:

a : b = int(a) + 2
>>> print(f"a:{a},b:{b}")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'b' is not defined 

Interactive window 上的输出 input 12 :

 a:12,b:14

这里有什么问题?

P.S. 类似的终端问题在这个线程中,但仍然没有任何解决方案。 Why there are different outputs here?

将完整代码添加到文件中,保存。点击 f.e。 F5 至 debug/run 程序。

您可能需要select

到运行吧。它将在“终端”中执行:

输入一个数字:

回车:


如果您将所有代码放入 copy/paste 缓冲区并将其“粘贴”到交互式控制台中,它将逐行执行

基本上你粘贴

a = input("a: ")

然后它需要你的下一行

b = int(a) + 2

作为您的输入并将其存储在a.

然后执行

print(f"a:{a},b:{b}")

并抱怨 b 因为你的行 b = int(a) + 2 被用作 input() 并且现在作为字符串存储在 a.

很简单

如果您在 python 终端中写入 a = input("a : "),它会执行,请参阅此

此外,如果我复制您的代码并将其粘贴到终端中,那么它看起来像这样

-> 如果你在这张图片中看到 b = int(a) + 2 作为 a 的输入。因此你得到错误

b is not defined

结论

在您编写 a = input("a : ") 时,您需要在此处提供输入示例(12) 然后写 b = int(a) + 2 然后 print(f"a:{a}:b{b}")

感谢大家的帮助。我从答案中发现 Terminal & Interactive window 的行为各不相同。

Terminal : 逐行执行代码。因此,在块的第一行输入一次代码块在这里效果不佳。

交互式 window : 可以使用代码块并且 act/execute 比终端更智能,正如您在问题的输出中看到的那样。