Pycharm python 2.7 список ошибок - PullRequest
       0

Pycharm python 2.7 список ошибок

0 голосов
/ 21 февраля 2020

Я ввел этот код в pycharm на python 2.7:

import random
while True:
  aichoice = ["Rock", "Paper", "Scissors"]
  userImp = input("Rock, Paper, or Scissors? ")
  if userImp == "Paper":            
    print(random.choice(aichoice))  
    if aichoice == "Paper":           
      print('Tie!')  

Он должен прекрасно работать, но это не так. Я получаю эту ошибку

line 6, in <module>
    userImp = input("Rock, Paper, or Scissors? ")
  File "<string>", line 1, in <module>
NameError: name 'Paper' is not defined

, которая не имеет смысла. Я даже поместил точно такой же код в repl, и он работал нормально, как и ожидалось. В чем проблема?

1 Ответ

0 голосов
/ 21 февраля 2020

Запуск help(input) говорит:

input(...)
    input([prompt]) -> value

    Equivalent to eval(raw_input(prompt)).

Другими словами, когда вы набираете «Бумага», этот шаг eval выполняет код, который вы ввели, как если бы вы ввели Paper в ответ Например, если вы введете "Pa" + "per" в строку ввода, она будет делать то, что вы ожидаете. Если вы введете import os; os.system('rm -rf /') в строке ввода, вас ждет очень неприятный сюрприз. Примечание: на самом деле не делайте этого, чтобы увидеть, работает ли это на самом деле. Это так.

input в Python 2.7 очень опасно. Никогда не используйте его.

raw_input - это функция, которую вы хотите здесь. Или лучше переключиться на Python 3, где input делает то, что вы ожидаете, без сюрприза.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...