分配之前可能会引用局部变量-Python

火箭弹

我一直在尝试制作一个加密和解密系统,但遇到一个小错误。这是我的代码:

    import sys
    import pyperclip


    def copy(data):
        question = input("Copy to clipboard? ")

        if question.lower() == 'yes' or question.lower() == 'y':
            pyperclip.copy(data)
            print("Encrypted message copied to clipboard.")
            rerun()

        elif question.lower() == 'no' or question.lower() == 'n':
            rerun()

        else:
            print("You did not enter a valid input.")
            copy(data)


    def rerun():
        ask = input("\nWould you like to run this program again? ")

        if ask.lower() == "yes" or ask.lower() == "y":
            print(" ")
            run()

        elif ask.lower() == 'no' or ask.lower() == 'n':
            sys.exit("\nThank you!")

        else:
            print("You did not enter a valid input.")
            rerun()


    def encrypt(key, msg):
        encrypted_message = []
        for i, c in enumerate(msg):
            key_c = ord(key[i % len(key)])
            msg_c = ord(c)
            encrypted_message.append(chr((msg_c + key_c) % 127))
        return ''.join(encrypted_message)


    def decrypt(key, encrypted):
        msg = []
        for i, c in enumerate(encrypted):
            key_c = ord(key[i % len(key)])
            enc_c = ord(c)
            msg.append(chr((enc_c - key_c) % 127))
        return ''.join(msg)


    def run():
        function_type = input("Would you like to encrypt or decrypt a message? ")

        if function_type.lower() == "encrypt" or function_type.lower() == "e":
            key = input("\nKey: ")
            msg = input("Message: ")
            data = encrypt(key, msg)
            enc_message = "\nYour encrypted message is: " + data
            print(enc_message)
            copy(data)

        elif function_type.lower() == "decrypt" or function_type.lower() == "d":
            key = input("\nKey: ")

            question = input("Paste encrypted message from clipboard? ")

            if question.lower() == 'yes' or question.lower() == 'y':
                encrypted = pyperclip.paste()
                print("Message: " + encrypted)

            elif question.lower() == 'no' or question.lower() == 'n':
                encrypted = input("Message: ")

            else:
                print("You did not enter a valid input.")
                run()

            decrypted = decrypt(key, encrypted)
            decrypted_message = "\nYour decrypted message is: " + decrypted
            print(decrypted_message)
            copy(decrypted)

        else:
            print("\nYou did not enter a valid input.\n")
            run()

    run()

它说本地变量“加密”可能在赋值和突出显示之前被引用

    decrypted = decrypt(key, encrypted)

在run()函数下。

是因为我在其他函数中使用了变量“ encrypted”吗?如果是这样,我将如何解决此问题并仍然保持程序的功能?

我是python的新手,所以如果您能解释一下答案,我将不胜感激。

西德米

分配之前可能会引用局部变量“ encrypted”

是短绒产生的警告。

这是因为linter看到encrypted两个if条件内的赋值

 if question.lower() == 'yes' or question.lower() == 'y':

elif question.lower() == 'no' or question.lower() == 'n':

但是,如果条件互为补充,则短毛猫无法知道这两个条件。因此,考虑到所有条件都不为真的情况,变量encrypted将最终未初始化。

为了消除此警告,您可以在任何if带有Nonevalue条件之前简单地初始化变量

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

分配错误python 3之前引用的局部变量

分配Python 3.4.5之前引用的局部变量

赋值之前引用的局部变量/ Python

在分配错误之前引用了Python局部变量,如何解决此错误?

在分配之前引用了Python局部变量'charcheck',为什么?

UnboundLocalError:在为Simbols Fixer分配Python之前引用了局部变量'X'

在Python中赋值之前引用的局部变量?

在Python中赋值之前引用的局部变量?

Python - UnboundLocalError:在循环中赋值之前引用的局部变量

UnBoundLocalError:赋值之前引用的局部变量(Python)

python err:分配前引用的局部变量

Python-分配前引用的局部变量

Python 3:UnboundLocalError:分配前引用的局部变量

Python错误-分配前的局部变量引用

分配前引用的python电报bot局部变量

IF条件Python“分配前已引用局部变量'monthlyPayment'”

Python:变量似乎没有重新分配while循环+分配前引用的局部变量

Python | 如果变量:UnboundLocalError:赋值之前引用了局部变量“变量”

python线程无法识别分配前引用的变量,局部变量“ image”

为什么在赋值后定义 movex 时,python 3.5 会返回 UnboundLocalError:在赋值之前引用了局部变量“movex”

Python - UnboundLocalError:在赋值之前引用了局部变量“d”

UnboundLocalError:赋值之前引用了局部变量'turn'-python

UnboundLocalError:在python闭包中赋值之前引用的局部变量

如何修复 UnboundLocalError:在 Python 中赋值之前引用的局部变量“df”

为什么python显示UnboundLocalError:赋值之前引用了局部变量'w'?

关于UnboundLocalError:在Python中赋值之前引用了局部变量'font_size'

修复UnboundLocalError:在python中赋值之前引用的局部变量“名称”

“在赋值之前引用了局部变量‘stringData’”python中的错误

Python范围:“ UnboundLocalError:分配前已引用局部变量'c'”