Skip to content

Commit 4df02c6

Browse files
committed
add exception handling for invalid password length to default length and validate security level
1 parent 8874260 commit 4df02c6

File tree

2 files changed

+21
-11
lines changed

2 files changed

+21
-11
lines changed

exercises/password_generator.py

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,25 @@
22
# Copyright (c) 2019. All rights reserved.
33

44
import time
5-
from exercises.utils.password_generator_util import generate_password
5+
from exercises.utils.password_generator_util import generate_password, security_level_is_valid
66

77

88
print("\n======================= PASSWORD GENERATOR =======================")
9-
password_length = int(input("Enter your password length: "))
10-
print("Password security level: [E]asy, [M]edium, [H]ard")
11-
security_level = input("Enter your password security level: ").upper()
12-
if security_level is None:
13-
print("Password security level incorrect!, Please try again.")
14-
else:
15-
print("Generating password...")
16-
result = generate_password(password_length, security_level)
17-
time.sleep(2)
18-
print("Generated password: {}".format(result))
9+
password_length = 0
10+
try:
11+
password_length = int(input("Enter your password length: "))
12+
except ValueError:
13+
password_length = 15
14+
finally:
15+
print("Password security level: [E]asy, [M]edium, [H]ard")
16+
security_level = input("Enter your password security level: ").upper()
17+
if security_level_is_valid(security_level):
18+
print("Generating password...")
19+
# stimulate generate
20+
time.sleep(1)
21+
result = generate_password(password_length, security_level)
22+
print("Generated password: {}".format(result))
23+
else:
24+
print("Password security level incorrect, Please try again.")
1925
print("======================= PASSWORD GENERATOR =======================")
2026

exercises/utils/password_generator_util.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@
99
REPETITIVE_LIMIT = 3
1010

1111

12+
def security_level_is_valid(security_level):
13+
return True if security_level_dict.get(security_level) else False
14+
15+
1216
def generate_password(password_length, security_level):
1317
generated_words = []
1418
old_group_index = None

0 commit comments

Comments
 (0)