下面的函数调用输入命令并检查str.isalnum()。
def enterPass(str):
x = raw_input("enter password Alpha or Alphanumeric! 'No_Space' :")
if x.isalnum():
print "saved"
else:
print "try again"
return;
以上是以下函数,当函数enterPass
被调用3次时存在。
_try = 1
while (_try <= 3):
enterPass("password")
_try += 1
我的意图是输入密码时应该验证它是否是Alpha-Numerics。如果是这样,它应该提示“已保存”并退出,如果没有,则应再次询问密码,如果用户无法正确获取密码3次,程序将退出。
我面临的问题是,一旦成功接受带有“已保存”提示的isalnum(),我就无法退出此程序。它又在循环中再次要求输入我的密码。请建议我如何使这个功能按预期工作,并且可能更有效。
以上课程仅供学术用途,目前无用。
答案 0 :(得分:2)
在这种情况下可能不需要函数,因为您可以使用break
:
tries = 0
while tries < 3:
x = raw_input("Enter password Alpha or Alphanumeric! No spaces! ")
if x.isalnum():
print "Saved"
break
print "Try again"
tries += 1
这是一个测试:
Enter password Alpha or Alphanumeric! No spaces! Hi!@#
Try again
Enter password Alpha or Alphanumeric! No spaces! !@#!@#
Try again
Enter password Alpha or Alphanumeric! No spaces! @@@@
Try again
>>>
Enter password Alpha or Alphanumeric! No spaces! No!
Try again
Enter password Alpha or Alphanumeric! No spaces! Okay
Saved
>>>
答案 1 :(得分:0)
您可以导入sys并执行sys.exit(0)
import sys
if x.isalnum():
print "saved"
sys.exit(0)
现在,当在IDLE中运行时,sys.exit会在退出程序时给你一些错误,忽略这些错误,因为在实际的最终程序中它们不会出现。
但是如果你想终止整个程序的话。如果你只是想摆脱循环并继续使用别的东西继续程序
if x.isalnum():
print "saved"
break
Break也必须处于循环中才能工作。