几乎相同的功能,但不起作用?
Almost the same function, but doesnt work?
我尝试了一些使用 python 的东西,虽然 encrypt() 函数工作正常,但 decrypt() 函数没有给我任何输出,甚至没有错误:(
我的代码:
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():
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()
if input(">>> ")==1:
encrypt()
elif input(">>> ")==2:
decrypt()
您正在阅读 elif
中的第二个输入。这就是为什么第一个命令似乎被忽略的原因。顺便说一下,Python 2 中的 input
是不安全的。你应该坚持使用 raw_input
(它只是 returns 一个字符串而不试图评估它)。
command = raw_input(">>> ")
if command=="1":
encrypt()
elif command=="2":
decrypt()
这里有一些建议:
- 使用raw_input
- 不要重复自己 - 不需要 4 条打印语句
- 您的函数打印相同的提示。这使用户感到困惑。至少添加一些关于正在发生的事情的指示
- 而不是递归调用
main()
(并最终达到堆栈上可以调用多少函数的限制),让 main()
有一个循环,每次都调用你的函数。
- 养成编写
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()
我尝试了一些使用 python 的东西,虽然 encrypt() 函数工作正常,但 decrypt() 函数没有给我任何输出,甚至没有错误:(
我的代码:
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():
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()
if input(">>> ")==1:
encrypt()
elif input(">>> ")==2:
decrypt()
您正在阅读 elif
中的第二个输入。这就是为什么第一个命令似乎被忽略的原因。顺便说一下,Python 2 中的 input
是不安全的。你应该坚持使用 raw_input
(它只是 returns 一个字符串而不试图评估它)。
command = raw_input(">>> ")
if command=="1":
encrypt()
elif command=="2":
decrypt()
这里有一些建议:
- 使用raw_input
- 不要重复自己 - 不需要 4 条打印语句
- 您的函数打印相同的提示。这使用户感到困惑。至少添加一些关于正在发生的事情的指示
- 而不是递归调用
main()
(并最终达到堆栈上可以调用多少函数的限制),让main()
有一个循环,每次都调用你的函数。 - 养成编写
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()