错误消息指出变量未定义.Python [英] Error message saying variable not defined when it is. Python

查看:49
本文介绍了错误消息指出变量未定义.Python的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用函数在python中创建一个简单的加密程序,但是遇到一个问题,当我运行该程序时会显示一条错误消息,提示(未定义'msgReversed').

I am trying to create a simple encryption program in python using functions but am having a problem where I get an error message when I run the program saying ('msgReversed' is not defined) when it is.

该程序通过首先反转用户消息,然后将字母移到Key的值来工作

the program works by first reversing the users message and then shifting the letters to the value of the Key

alphabet=("abcdefghijklmnopqrstuvwxyz ")

def userInput():
    plaintext=input("Enter message to encript")
    k=int(input("Enter encription Key you want to use (1-25)"))
    return (k,plaintext)

def reverseMsg(plaintext):
    msgReversed=''
    leng=len(plaintext)-1
    for c in plaintext:
        msgReversed+=plaintext[leng]
        leng=leng-1
    print(msgReversed)
    return(msgReversed)

def encript(msgReversed,k):
    cipher=''
    for c in msgReversed:
        if c in alphabet:
            cipher+=alphabet[(alphabet.index(c)+k)%(len(alphabet))]
        print(cipher)

(k,plaintext)=userInput()
reverseMsg(plaintext)
(cipher)=encript(msgReversed,k)

错误消息内容如下:

Line 26, in <module>
    (cipher)=encript(msgReversed,k)
NameError: name 'msgReversed' is not defined

推荐答案

如我的评论所述,您的变量msgReversed不在函数外部声明,因此在函数外部调用时未定义.为了避免发布重复的答案,这是另一种方法:

As mentioned in my comment, your variable msgReversed is not declared outside of your function, so it is not defined when you call it outside of it. In order to avoid posting duplicate answers, here is another approach:

我不知道您以前是否使用过类,但这是一个示例和pythons官方文档( https://docs.python.org/2/tutorial/classes.html )

I do not know if you have worked with classes before, but here is an example and pythons official documentation (https://docs.python.org/2/tutorial/classes.html)

class Encrypt:

    def __init__(self):



        (k,plaintext)=self.userInput()
        self.reverseMsg(plaintext)
        cipher =self.encript(self.msgReversed,k)

    def userInput(self):
        plaintext=input("Enter message to encript")
        k=int(input("Enter encription Key you want to use (1-25)"))
        return (k,plaintext)

    def reverseMsg(self, plaintext):
        self.msgReversed=''
        leng=len(plaintext)-1
        for c in plaintext:
            self.msgReversed+=plaintext[leng]
            leng=leng-1
        print(self.msgReversed)
        return(self.msgReversed)

    def encript(slf, msgReversed, k):
        alphabet=("abcdefghijklmnopqrstuvwxyz ")
        cipher=''
        for c in msgReversed:
            if c in alphabet:
                cipher += alphabet[(alphabet.index(c)+k)%(len(alphabet))]
        print(cipher)

Encrypt()

对于全局变量,可以在函数内声明全局变量.您要做的就是将其声明为全局:

As for Global variables, you can declare a global within a function. all you have to do is declare it global:

variable_name global

所以带有变量msgReversed的函数如下:

so your function with your variable msgReversed would be as follows:

def reverseMsg(plaintext):
    global msgReversed
    msgReversed = ''
    leng=len(plaintext)-1
    for c in plaintext:
        msgReversed+=plaintext[leng]
        leng=leng-1
    print(msgReversed)
    return(msgReversed)

这篇关于错误消息指出变量未定义.Python的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆