Python NameError - PullRequest
       7

Python NameError

1 голос
/ 17 января 2010
list1 = [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z]

for item in list1:
    print item

Не уверен, почему приведенный выше код выдает эту ошибку:

NameError: "name 'a' is not defined"

Ответы [ 7 ]

12 голосов
/ 17 января 2010

Помимо правильного использования кавычек, не вводите заново алфавит.

>>> import string
>>> string.ascii_lowercase
'abcdefghijklmnopqrstuvwxyz'
>>> L = list(string.ascii_lowercase)
>>> print L
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', ...
>>> help(string)
7 голосов
/ 17 января 2010

Вы должны поместить строки в (двойные) кавычки

list1 = ["a","b","c",...] 

должно работать

2 голосов
/ 17 января 2010

Строковый литерал должен быть заключен в кавычки:)

list1 = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]
1 голос
/ 19 января 2010

Каждый язык должен различать константы и имена / переменные. Самое запутанное, когда нужно различать строковые константы и идентификаторы / имена / переменные.

Оболочка (sh, bash, ksh, csh, cmd.com и т. Д.) Имеет тенденцию использовать константы; так что вы можете просто ввести константу и поставить префикс имени / переменной специальным символом ($ для оболочек Unix,% для cmd.com и т. д.), когда вы хотите получить ее значение.

$ echo hello
hello
$ echo $PWD
/home/tzot
$ cd /tmp
$ cd $OLDPWD

Большинство других универсальных языков программирования, как правило, используют переменные гораздо чаще, чем константы, поэтому все наоборот: вы просто вводите имя переменной и вы (обычно) заключаете строковые константы в кавычки ('', "", [ ] и т. д.):

# assumed: a_name= "the object it points to"

>>> print ("a constant")
a constant
>>> print (a_name)
the object it points to
1 голос
/ 17 января 2010

python интерпретирует элементы в вашем списке как переменные, вы должны заключить их в

'или «

1 голос
/ 17 января 2010

Выбор лучшего из предыдущих постов - вот как я бы это сделал, поскольку строку можно повторять.

>>> import string
>>> for letter in string.ascii_lowercase:
...     print(letter)
... 
0 голосов
/ 18 января 2010

Когда мне нужно составить список символов, если они еще не доступны в чем-то, определенном в std lib, и если мне действительно нужен список, а не просто строка, я использую это форма:

punc = list(r";:`~!@#$%^&*()_-+=[]{}\|,./<?>")
vowels = list("aeiou")  # or sometimes list("aeiouy")

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

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