名字没有定义,我在哪里出错了?

时间:2016-03-16 14:44:06

标签: python python-3.x

目前正在做一些学校的编程,我对这里出错的地方感到困惑:

#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)

我不断收到错误"字符"没有定义。我已经在内部评论中帮助您确定原因。

2 个答案:

答案 0 :(得分:0)

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

character是列表推导的局部变量。它在外面是不确定的。

很容易看到一些简单的例子:

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

答案 1 :(得分:0)

您遇到的问题是关于范围。字符变量只存在于您在列表推导中创建的伪for循环中。要解决这个问题,你需要1)访问X或2中的字符。创建一个将存在charachter的for循环

示例:

#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)