2016-03-16 2 views
0

В настоящее время делают некоторые школы программирования, и я запутался, где я пошло не так здесь:Имя не определено, смущено, где я поступил не так?

#declaring array names. 
longitude=[]; latitude=[]; messagetext=[];encryptions=[]; 
input_file = open('messages.txt', 'r') 


lines_in_file_array = input_file.read().splitlines() 
input_file.close() 

#appending the lines in a select file to select records. 
for line in lines_in_file_array: 
    record_array = line.split(',') 
    longitude.append(record_array[0]) 
    latitude.append(record_array[1]) 
    messagetext.append(record_array[2]) 


def encrypt(): 
    for index in range(len(messagetext)): 
     x=messagetext[index] 
     x=([ord(character)+2 for character in x]) 
     #the character under this seems to not like being defined. I'm  confused? 
     codedx=str.join(chr(character),'','','','') 
     encoded_text.append(codedx) 
    print(codedx) 


encrypt() 
print(messagetext) 

Я получаю ошибку, что «символ» не определен. Я добавил внутренние комментарии, чтобы помочь вам определить причину.

+5

Как ошибка говорит вам 'character' не определен. Что правильно. Если вы заглянете внутрь своего метода 'encrypt', вы пытаетесь использовать символ, не объявляя его или не присваивая ему никакого значения. Что должно быть «символом» в вашем коде? – idjaw

+0

В дополнение к комментарию @ idjaw в python мы обычно ссылаемся на массивы в виде списков. – Igor

+0

@idjaw Это предназначено для ASCII для каждого аргумента. Он находится в цикле. Я пытаюсь превратить каждый символ в свою очередь в ASCII, добавить два, а затем обратно. Я немного запутался в том, как это сделать сейчас. – Alev

ответ

0
x=([ord(character)+2 for character in x]) 

character - локальная переменная для понимания списка здесь. Это было бы неопределено снаружи.

Легко видеть, на каком-то простом примере:

[i for i in range(10)] 
print(i) # NameError: name 'i' is not defined 
0

Проблема у вас возникли около рамки. Символьная переменная живет только внутри цикла псевдо-цикла, который вы уложили внутри понимания списка. Чтобы это исправить, нужно 1), чтобы получить доступ к символам внутри X или 2) Для того, чтобы создать цикл, который будет содержать существование charachter

Пример:

#declaring array names. 
longitude=[]; latitude=[]; messagetext=[];encryptions=[]; 
input_file = open('messages.txt', 'r') 


lines_in_file_array = input_file.read().splitlines() 
input_file.close() 

#appending the lines in a select file to select records. 
for line in lines_in_file_array: 
    record_array = line.split(',') 
    longitude.append(record_array[0]) 
    latitude.append(record_array[1]) 
    messagetext.append(record_array[2]) 


def encrypt(): 
    for index in range(len(messagetext)): 
     x=messagetext[index] 
     for y in x: 
      charachter = ord(y)+2 
      #the character under this seems to not like being defined. I'm  confused? 
      codedx=str.join(chr(character),'','','','') 
      encoded_text.append(codedx) 
      print(codedx) 


encrypt() 
print(messagetext)