【发布时间】:2015-09-27 23:16:47
【问题描述】:
我正在用 python 做一个简单的停止者密码程序,这个概念让我困惑了很长时间。
我所做的是向用户询问 raw_input 以确定密码的消息和密钥,如下所示:
def user_input():
ask_user = raw_input("Do you want to encrypt or decrypt a message?")
if ask_user in "encrypt e".split():
message = get_message()
key = get_key()
translate_message(message, key)
else:
print 'Type encrypt or e for encryption, or decrypt or d doe decryption'
user_input()
这会收集消息和密钥,并传递给 translate_message 以进行实际加密。
这是我的 get_message 函数:
def get_message():
get_user_message = raw_input('enter in your message\n')
vm = validate_message(get_user_message)
if not vm:
print 'Please enter a valid message'
get_message()
else:
print get_user_message
return get_user_message
我想验证输入以确保用户输入正确的值。如果根据validate_message判断值不正确,则再次调用get_message,否则get_message返回原值。
这里是 validate_message:
def validate_message(message):
if not re.match(r'^[A-Za-z]+$', message):
return False
return True
只是一个简单的检查(我喜欢我的函数做一件事)
通常,这运行良好,并且键和消息值会像正常一样返回。当我故意输入不正确的值来测试我的验证时,就会出现问题。
这是 translate_message 返回的没有错误值的内容(它只返回两个值):
'test_message', 22
当我输入不正确的值时,就会出现混乱。假设我输入 3333(由于值不正确,会调用 get_message()),直到用户输入正确的输入。如果用户在成功输入值之前输入了任何类型的错误值,则 translate_message 将返回 None
None, 22
在 get_message() 函数中,我在返回值之前添加了一个打印语句,它按预期打印出正确的值。那为什么是
key = get_key()
等于无?我查看了 get_message() 中的逻辑,当它应该返回用户正确的猜测时,我看不到返回值等于 None 的位置。
感谢任何帮助,如果有更好的方法来实现这种类型的逻辑,我想知道!我对 python 编程相当陌生。
谢谢!
【问题讨论】:
标签: python