2017-05-17 8 views
-1

私はパスワードリセットプログラムを作成しようとしています。これには、パスワードに小文字と大文字の数が含まれています。変数内の数字の数を数える方法

import time 
print("Please create a new password") 
password = input() 
print("Re-enter your password") 
password2 = input() 
if password != password2: 
    print("Your Passwords Do Not Match") 
    time.sleep(2) 
    print("Please create a new password") 
    password = input() 
    print("Re-enter your password") 
    password2 = input() 
valid = 0 
lower = 0 
upper = 0 


for c in password: 
    if c.islower(): 
     lower += 1 
    elif c.isupper(): 
     upper += 1 
    else: 
     pass 

char_count = upper + lower 
if char_count >= 8: 
    valid += 1 
    if lower >= 1: 
     valid += 1 
    else: 
     print("Your Password Has No Lowercase Letters") 
    if upper >= 1: 
     valid += 1 
    else: 
     print("Your Password Has No Uppercase Letters") 


else: 
    print("Your Password Doesn't Have 8 Characters") 

if valid == 3: 
    print("Your Password Is Valid. Welcome") 
else: 
    print("Your Password Is Invalid. Sorry") 
    time.sleep(2) 
    print("Please create a new password") 
    password = input() 
    print("Re-enter your password") 
    password2 = input() 

EDIT:パスワードが8つの未満の文字であるか、何の大文字または小文字が含まれていない場合、それはパスワードを拒否、しかし、プログラムは、それがありますどのように多くの数字を計算することができないとして数字があるときにクラッシュをありがとうあなたの助けは私のプログラムが動作します!みんなありがとう!

答えて

1

あなたは1 S/0のリストを合計することにより、パスワードのすべての数字の数を取得することができ、文字を意味1があります桁、0そうでない場合:

>>> password= "134jhie92" 
>>> sum([1 if c.isdigit() else 0 for c in password]) 
5 

か:

これはまたあなたの他のパラメータで行うことができます。

lower = sum(map(str.islower, password)) 
upper = sum(map(str.isupper, password)) 
nums = sum(map(str.isdigit, password)) 

(panatale1により示唆されるように)それはあなたのif文を拡張するために、より理にかなってますが:

lower = 0 
upper = 0 
nums = 0 

for c in password: 
    if c.islower(): 
     lower += 1 
    elif c.isupper(): 
     upper += 1 
    elif c.isdigit(): 
     nums += 1 
0

numという変数を作成し、forループを変更:

for c in password: 
    if c.isdigit(): 
     num += 1 
    elif c.islower(): 
     lower += 1 
    elif c.isupper(): 
     upper += 1 
    else: 
     pass 
関連する問題