2010-01-17 3 views
1
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 

Не знаю, почему выше код бросает эту ошибку:Python NameError

NameError: "name 'a' is not defined" 

ответ

12

В дополнение к использованию правильных котировок не переписывайте алфавит.

>>> 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) 
+2

Ну, строка итерабельна, поэтому можно сделать: для s в string.ascii_lowercase: print (s) –

+0

Спасибо за подсказку! :) – 3zzy

+0

Не нужно ничего импортировать. Просто сделайте '[chr (i) для i в диапазоне (97,123)]' , чтобы получить все строчные буквы в обычном старом питоне. Или 'range (65,91)' для верхнего регистра. – Mike

7

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

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

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

+0

Aaah! : P Спасибо – 3zzy

+0

Да, я думаю, мы все знаем, что это болван. Иногда это слишком очевидно: D – Leo

+1

ли это двойные или одинарные кавычки, не имеет значения. – SilentGhost

2

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

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

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

>>> import string 
>>> for letter in string.ascii_lowercase: 
...  print(letter) 
... 
1

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

' or "

0

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

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

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

1

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

Оболочка (sh, bash, ksh, csh, cmd.com и т. Д.) Имеет тенденцию использовать константы; поэтому вы можете просто ввести константу и указать имя/переменную с особым символом ($ для unix shells,% для 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