2013-06-09 3 views
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 (저장 됨)"메시지가 나타나서 종료되고, 그렇지 않으면 암호를 다시 묻는 메시지가 나타나야하고 사용자가 암호를 세 번 올바르게 못들어 오면 프로그램이 종료됩니다.

내가 직면 한 문제는 "저장 됨"프롬프트에서 isalnum()을 성공적으로 수락하면이 프로그램을 종료 할 수 없다는 것입니다. 암호를 다시 입력하라는 요청이 루프에서 다시 발생합니다. 이 기능을 원하는대로 작동시킬 수있는 방법을 제안하십시오.

위의 프로그램은 학업 목적으로 작성되었으며 현재로서는 유용한 응용 프로그램이 없습니다.

답변

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! [email protected]# 
Try again 
Enter password Alpha or Alphanumeric! No spaces! [email protected]#[email protected]# 
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 
>>> 
+0

완벽한 답변 !! –

+0

@ KapilSoni 감사합니다! – TerryA

0
당신은 SYS를 가져올 수

및 do sys.exit (0)

import sys 


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

이제 sys.exit는 실제 최종 프로그램에서 나타나지 않으므로 IDLE에서 실행 중일 때 프로그램을 종료 할 때 오류가 발생합니다.

하지만 전체 프로그램을 종료하려는 경우입니다. 당신은 단순히 루프의 탈옥과 다른 뭔가 프로그램을 계속하려면 당신은 작동하려면 또한 루프에 있어야합니다

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

휴식을 할 수 있습니다.

관련 문제