NameError: имя «слово» не определено

Я пытаюсь создать функцию mixWord, но получаю сообщение об ошибке NameError: name 'word' is not defined Что мне здесь не хватает?

def mixWord(word):
    characterList = list(word);
    print characterList
    import random;
    random.shuffle(characterList);
    print characterList;
    shuffledWord = ''.join(characterList);
    print shuffledWord;

Traceback (последний последний вызов):

Файл "", строка 1, в

миксворд (слово)

NameError: имя «слово» не определено


person user2510694    schedule 21.06.2013    source источник
comment
Опубликуйте полную трассировку и остальную часть кода. Ваша ошибка не здесь.   -  person Blender    schedule 21.06.2013
comment
Трассировка (последний последний вызов): файл ‹pyshell#79›, строка 1, в ‹модуле› mixWord (слово) NameError: имя «слово» не определено   -  person user2510694    schedule 21.06.2013
comment
@ user2507566: Пожалуйста, обновите свой вопрос.   -  person Ankur Ankan    schedule 21.06.2013
comment
Был ли код [повторно] сохранен в правильный файл? Может ли ошибка воспроизводиться при запуске/редактировании кода через IDLE? Эта ошибка не должна генерироваться в этой позиции: я подозреваю, что фактический код отличается от предполагаемого. (Кроме того, уберите точки с запятой — они плохо смотрятся!)   -  person user2246674    schedule 21.06.2013
comment
Да, код выглядит нормально и работает для меня.   -  person    schedule 21.06.2013
comment
Я сохранял его несколько раз, пытаясь заставить его работать по-разному. Я использовал IDLE.   -  person user2510694    schedule 21.06.2013
comment
@user2507566 user2507566 Итак, запуск вставленного кода напрямую из буфера IDLE (окна) приводит к этой ошибке? Я не уверен, что это будет..   -  person user2246674    schedule 21.06.2013
comment
@ user2507566: У вас есть переменная word, определенная перед вызовом mixWord(word)?   -  person Ankur Ankan    schedule 21.06.2013
comment
@AnkurAnkan Первая строка — это объявление функции, а не вызов. word там не оценивается.   -  person user2246674    schedule 21.06.2013
comment
я продолжаю получать ошибку по какой-то причине. это не определяет слово   -  person user2510694    schedule 21.06.2013
comment
@ user2246674: я только что проверил. Я получаю ту же ошибку, если я вызываю mixWord без объявления word.   -  person Ankur Ankan    schedule 21.06.2013
comment
что вы сделали, чтобы исправить это до @user2246674?   -  person user2510694    schedule 21.06.2013
comment
@ user2246674: Вопрос не был опубликован четко. Не упоминается, что он получает ошибку при вызове функции. Но трассировка показывает, что он вызывает функцию.   -  person Ankur Ankan    schedule 21.06.2013
comment
@AnkurAnkan Тогда единственный логический вывод заключается в том, что опубликованный код и работающий код отличаются.   -  person user2246674    schedule 21.06.2013
comment
Я нашел то, что я испортил, спасибо всем за помощь   -  person user2510694    schedule 21.06.2013
comment
@ user2246674: Да. Я даже пытался отредактировать вопрос, но редактирование отклоняется.   -  person Ankur Ankan    schedule 21.06.2013


Ответы (2)


Проблема в PEBKAC — именно вам предстоит узнать, какая форма.

То есть исполняемый код не совпадает с опубликованным кодом; размещенный код работает должным образом:

def mixWord(word):
    characterList = list(word);
    print characterList
    import random;
    random.shuffle(characterList);
    print characterList;
    shuffledWord = ''.join(characterList);
    print shuffledWord;

mixWord("PEBKAC")

Итак, узнайте, почему:

  • Файл сохранился?
  • Файл был сохранен в правильном месте?
  • Запускается ли файл из правильного места?
  • Ошибка полностью связана с другим кодом?

Кроме того, попробуйте запустить код непосредственно из буфера IDLE, так как это должно быть невосприимчиво к предыдущим потенциальным проблемам.

После решения проблемы рассмотрите возможность обновления кода, чтобы не использовать точки с запятой, так как они здесь не требуются, и это не Python.

person user2246674    schedule 21.06.2013

Я думаю, проблема в том, что вы вызываете mixWord(word) без определения какой-либо переменной word.

person Ankur Ankan    schedule 21.06.2013
comment
как бы я определил переменную слова? извините, я очень новичок в python - person user2510694; 21.06.2013
comment
С определением я имел в виду, что у вас есть переменная с именем word перед вызовом mixWord(word)? - person Ankur Ankan; 21.06.2013
comment
Перед вызовом mixWord(word) просто попробуйте print(word). Если print(word) также дает NameError, это означает, что нет переменной с именем «слово». - person Ankur Ankan; 21.06.2013
comment
Просто введите word = 'someword' в оболочке Python, а затем напишите свою функцию, или вы можете определить слово в самой своей функции. - person vkrams; 21.06.2013
comment
Хорошо, теперь я понимаю, я вижу, что просто не использовал свой мозг вообще. Спасибо, что терпишь меня. - person user2510694; 21.06.2013