【问题标题】:Visual Studio Code Python terminal doesn't like input()Visual Studio Code Python 终端不喜欢 input()
【发布时间】:2020-07-16 10:18:44
【问题描述】:

我最近在学习 Web 开发后开始学习 python。我想在我的 VSCode 终端中尝试我的第一个程序,但它不起作用。我的程序确实可以在我的 Mac 终端中运行。我有最新的 VSCode 版本和 MacOS Mojave。我使用 Python 3.8。我使用“Code Runner”插件运行代码。

这是我的程序:

import random
import sys
print('ROCK, PAPER, SCRISSORS')
wins = 0
losses = 0
ties = 0
while True:
    print('--- %s Wins, %s Losses, %s ties ---' % (wins, losses, ties))
    while True: #This While loop activates if a user doesn't type 'r', 'p', 's', or 'q'.
        print(
            "Enter a move: -|- rocks = r, paper = p, scissors = s -|- You can quit by typing 'q'")
        userMove = input()
        if userMove == 'q':
            sys.exit()
        elif userMove == 'r' or userMove == 's' or userMove == 'p':
            break
    randomNumber = random.randint(1, 3)
    myMove = ''
    losing = 'You lost'
    winning = 'You won!!!'
    tie = 'It s a tie. I will beat you later!'
    if randomNumber == 1:
        myMove = 'rock'
    elif randomNumber == 2:
        myMove = 'paper'
    else:
        myMove = 'scissors'
    if (userMove == 'r' and myMove == 'paper' or userMove == 'p' and myMove == 'rock' or userMove == 's' and myMove == 'paper'):
        print(winning)
        wins = wins + 1
    elif (userMove == 'r' and myMove == 'rock' or userMove == 'p' and myMove == 'paper' or userMove == 's' and myMove == 'scissors'):
        print(tie)
        ties = ties + 1
    elif (userMove == 'r' and myMove == 'scissors' or userMove == 'p' and myMove == 'scissors' or userMove == 's' and myMove == 'rock'):
        print(losing)
        losses = losses + 1

这基本上是一个简单的石头剪刀布游戏。当我输入“r”、“p”或“s”时,它会这样说:

'NameError: name 'r' is not defined'

我也尝试在 vscode 中运行 mac 终端,但由于某种原因没有成功。

这是一个错误,还是我的错?任何答案将不胜感激。

编辑:

这是我的“Code Runner”插件中的错误。如果您遇到同样的问题,请转到您的 Code Runner JSON 设置,并将“Python -u”更改为“python3”。

【问题讨论】:

  • 代码没有问题,在jupyter notebook中运行良好
  • 你使用的是 python 2

标签: python macos visual-studio-code terminal


【解决方案1】:

我尝试在 eric6 IDE 和 Python IDLE 中运行您的程序,它运行时没有任何问题/问题。

如果您有多个 Python 版本(特别是 Python 2.x),请在左下角检查您使用的 Python 版本是否实际上不是 2.x,因为在 Python 2 中您使用 raw_input 而不是 input 并且可以解释你得到的行为。

如果这不起作用,这可能是 VS Code 方面的问题。

【讨论】:

  • 谢谢!我使用了 Python 3.8,如果我单击“在终端中运行 python 文件”,它现在可以工作。看来我的“代码运行器”插件不起作用。我现在将编辑我的帖子。
【解决方案2】:

我猜你使用的是 python 2? (你可以通过运行python -V 来判断)

如果可能,您确实应该切换到 python3,但如果不是,您应该使用 'raw_input' 函数而不是 'input' 函数

在 python2 中,input() 函数将用户的输入计算为 python 表达式。这意味着如果我输入2+2,你将不会得到一个包含“2+2”的字符串,而是4

如果你输入一个字母(在你的例子中是p),它会尝试找到一个这样命名的变量。由于您的代码中没有 p 变量,因此会引发错误。

【讨论】:

  • 谢谢!我正在使用 Python 3.8,但仍然感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-02
  • 2018-03-09
  • 1970-01-01
  • 2020-01-12
  • 2020-06-16
相关资源
最近更新 更多