为了账号安全,请及时绑定邮箱和手机立即绑定

几乎相同的功能,但不起作用?

几乎相同的功能,但不起作用?

胡说叔叔 2021-06-14 12:31:50
我尝试了一些使用 python 的东西,虽然encrypt()函数工作正常,但decrypt()函数没有给我任何输出,甚至没有错误:(我的代码:import osabc=['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', '2', '3', '4',   '5', '6', '7', '8', '9', '0', '+', '-', ':', "'"]mixed=abc[::-1]os.system("clear")def menu():    print "-----------"    print "[1] Encrypt"    print "[2] Decrypt"    print "-----------"    if input(">>> ")==1:        encrypt()    elif input(">>> ")==2:        decrypt()def encrypt():    os.system('clear')    text=raw_input(">>> ").lower()    text=list(text)    textnew=text    for i in range(len(text)):        textnew[i]=mixed[abc.index(text[i])]    print ''.join(textnew)    menu()def decrypt():    os.system('clear')    text=raw_input(">>> ").lower()    text=list(text)    textnew=text    for i in range(len(text)):        textnew[i]=abc[mixed.index(text[i])]    print ''.join(textnew)    menu()menu()
查看完整描述

2 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

if input(">>> ")==1:

    encrypt()

elif input(">>> ")==2:

    decrypt()

您正在阅读elif. 这就是为什么第一个命令似乎被忽略的原因。顺便说一句,input在 Python 2 中是不安全的。你应该坚持使用raw_input(它只返回一个字符串而不尝试评估它)。


command = raw_input(">>> ")

if command=="1":

    encrypt()

elif command=="2":

    decrypt()


查看完整回答
反对 回复 2021-06-16
?
RISEBY

TA贡献1856条经验 获得超5个赞

这里有一些建议:

  • 使用 raw_input

  • 不要重复自己 - 不需要 4 个打印语句

  • 您的函数打印相同的提示。这让用户感到困惑。至少添加一些关于正在发生的事情的指示

  • 而不是递归调用main()(并最终达到限制可以在堆栈上调用多少函数),makemain()有一个每次调用您的函数的循环。

  • 养成编写的习惯,if __name__ = '__main__':因为当您开始编写 Python 模块时,您不希望脚本在导入时运行所有内容,而只是向调用脚本提供函数。

  • 换行 80 个字符

编辑的代码:

import os

abc=['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', '2', '3', '4',   '5', '6', '7', '8', '9', '0', '+', '-', 

     ':', "'"]

mixed=abc[::-1]

os.system("clear")


def menu():

    header = '\n'.join(["-----------","[1] Encrypt",

                        "[2] Decrypt","-----------"])

    while True:

        print header

        user_input = raw_input(">>> ")

        # print "DEBUG:user input:",user_input

        if user_input == '1':

            encrypt()

        elif user_input == '2':

            decrypt()

        elif user_input == 'q':

            exit()

        else:

            print("Bad input")


def get_input():

    os.system('clear')

    print "Encrypt"

    text=raw_input(">>> ").lower()

    return list(text)



def encrypt():

    text = get_text()

    textnew=text

    for i in range(len(text)):

        textnew[i]=mixed[abc.index(text[i])]

    print ''.join(textnew)


def decrypt():

    text = get_input()

    textnew=text

    for i in range(len(text)):

        textnew[i]=abc[mixed.index(text[i])]

    print ''.join(textnew)


if __name__ = '__main__':    

    menu()


查看完整回答
反对 回复 2021-06-16
  • 2 回答
  • 0 关注
  • 151 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信