在False时重复循环

时间:2013-06-09 03:24:56

标签: python loops repeat

下面的函数调用输入命令并检查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(),我就无法退出此程序。它又在循环中再次要求输入我的密码。请建议我如何使这个功能按预期工作,并且可能更有效。

以上课程仅供学术用途,目前无用。

2 个答案:

答案 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也必须处于循环中才能工作。