0

下面的函数调用输入命令并检查 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

我的意图是在输入密码时,它应该验证它是否是字母数字。如果是,它应该提示“Saved”并退出,如果不是,它应该再次要求输入密码,如果用户3次无法正确输入密码,程序应该退出。

我面临的问题是,一旦它成功接受了带有“已保存”提示的 isalnum(),我就无法退出该程序。它再次进入循环,要求再次输入我的密码。请建议我如何使此功能按预期工作,并且可能更有效。

上述程序仅用于学术目的,目前没有有用的应用程序。

4

2 回答 2

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
>>> 
于 2013-06-09T03:33:21.213 回答
0

您可以导入 sys 并执行 sys.exit(0)

import sys


if x.isalnum():
        print "saved"
        sys.exit(0)

现在 sys.exit 在空闲时退出程序时会给你一堆错误,忽略这些,因为在实际的最终程序中它们不会出现。

但那是如果你想终止整个程序。如果您只是想跳出循环并使用其他可以执行的操作继续程序

if x.isalnum():
        print "saved"
        break

Break 也必须在一个循环中才能工作。

于 2013-06-09T03:35:24.860 回答