|
1 | 1 | # PasswordGenerator GGearing 314 01/10/19
|
2 | 2 | # modified Prince Gangurde 4/4/2020
|
3 | 3 |
|
4 |
| -from random import randint |
| 4 | +import random |
5 | 5 | import pycountry
|
6 | 6 |
|
7 |
| -case = randint(1, 2) |
8 |
| -number = randint(1, 999) |
9 |
| - |
10 |
| -# TODO: Pick random country from it |
11 |
| - |
12 |
| -countries = list(pycountry.countries) |
13 |
| -country_names = [country.name for country in countries] |
14 |
| - |
15 |
| -print(country_names) |
16 |
| - |
17 |
| -# TODO: Try to add languages, too. |
18 |
| - |
19 |
| -specialCharacters = ( |
20 |
| - "!", |
21 |
| - "@", |
22 |
| - "#", |
23 |
| - "$", |
24 |
| - "%", |
25 |
| - "/", |
26 |
| - "?", |
27 |
| - ":", |
28 |
| - "<", |
29 |
| - ">", |
30 |
| - "|", |
31 |
| - "&", |
32 |
| - "*", |
33 |
| - "-", |
34 |
| - "=", |
35 |
| - "+", |
36 |
| - "_", |
37 |
| -) |
38 |
| - |
39 |
| -animals = ( |
40 |
| - "ant", |
41 |
| - "alligator", |
42 |
| - "baboon", |
43 |
| - "badger", |
44 |
| - "barb", |
45 |
| - "bat", |
46 |
| - "beagle", |
47 |
| - "bear", |
48 |
| - "beaver", |
49 |
| - "bird", |
50 |
| - "bison", |
51 |
| - "bombay", |
52 |
| - "bongo", |
53 |
| - "booby", |
54 |
| - "butterfly", |
55 |
| - "bee", |
56 |
| - "camel", |
57 |
| - "cat", |
58 |
| - "caterpillar", |
59 |
| - "catfish", |
60 |
| - "cheetah", |
61 |
| - "chicken", |
62 |
| - "chipmunk", |
63 |
| - "cow", |
64 |
| - "crab", |
65 |
| - "deer", |
66 |
| - "dingo", |
67 |
| - "dodo", |
68 |
| - "dog", |
69 |
| - "dolphin", |
70 |
| - "donkey", |
71 |
| - "duck", |
72 |
| - "eagle", |
73 |
| - "earwig", |
74 |
| - "elephant", |
75 |
| - "emu", |
76 |
| - "falcon", |
77 |
| - "ferret", |
78 |
| - "fish", |
79 |
| - "flamingo", |
80 |
| - "fly", |
81 |
| - "fox", |
82 |
| - "frog", |
83 |
| - "gecko", |
84 |
| - "gibbon", |
85 |
| - "giraffe", |
86 |
| - "goat", |
87 |
| - "goose", |
88 |
| - "gorilla", |
89 |
| -) |
90 |
| - |
91 |
| -colour = ( |
92 |
| - "red", |
93 |
| - "orange", |
94 |
| - "yellow", |
95 |
| - "green", |
96 |
| - "blue", |
97 |
| - "indigo", |
98 |
| - "violet", |
99 |
| - "purple", |
100 |
| - "magenta", |
101 |
| - "cyan", |
102 |
| - "pink", |
103 |
| - "brown", |
104 |
| - "white", |
105 |
| - "grey", |
106 |
| - "black", |
107 |
| -) |
108 |
| - |
109 |
| -chosenanimal = animals[ |
110 |
| - randint(0, len(animals) - 1) |
111 |
| -] # randint will return max lenght but , tuple has index from 0 to len-1 |
112 |
| -chosencolour = colour[randint(0, len(colour) - 1)] |
113 |
| -chosenSpecialCharacter = specialCharacters[randint(0, len(specialCharacters) - 1)] |
114 |
| - |
115 |
| -if case == 1: |
116 |
| - chosenanimal = chosenanimal.upper() |
117 |
| - print(chosencolour + str(number) + chosenanimal + chosenSpecialCharacter) |
118 |
| -else: |
119 |
| - chosencolour = chosencolour.upper() |
120 |
| - print(chosenanimal + str(number) + chosencolour + chosenSpecialCharacter) |
121 |
| - |
122 |
| -# Try to consolidate unify the characters. |
123 |
| - |
124 |
| - |
125 |
| -# The program can be further improved. |
| 7 | +def generate_password(): |
| 8 | + # Define characters and word sets |
| 9 | + special_characters = list("!@#$%/?<>|&*-=+_") |
| 10 | + |
| 11 | + animals = ( |
| 12 | + "ant", "alligator", "baboon", "badger", "barb", "bat", "beagle", "bear", "beaver", "bird", |
| 13 | + "bison", "bombay", "bongo", "booby", "butterfly", "bee", "camel", "cat", "caterpillar", |
| 14 | + "catfish", "cheetah", "chicken", "chipmunk", "cow", "crab", "deer", "dingo", "dodo", "dog", |
| 15 | + "dolphin", "donkey", "duck", "eagle", "earwig", "elephant", "emu", "falcon", "ferret", "fish", |
| 16 | + "flamingo", "fly", "fox", "frog", "gecko", "gibbon", "giraffe", "goat", "goose", "gorilla" |
| 17 | + ) |
| 18 | + |
| 19 | + colours = ( |
| 20 | + "red", "orange", "yellow", "green", "blue", "indigo", "violet", "purple", |
| 21 | + "magenta", "cyan", "pink", "brown", "white", "grey", "black" |
| 22 | + ) |
| 23 | + |
| 24 | + # Get random values |
| 25 | + animal = random.choice(animals) |
| 26 | + colour = random.choice(colours) |
| 27 | + number = random.randint(1, 999) |
| 28 | + special = random.choice(special_characters) |
| 29 | + case_choice = random.choice(["upper_colour", "upper_animal"]) |
| 30 | + |
| 31 | + # Pick a random country and language |
| 32 | + country = random.choice(list(pycountry.countries)).name |
| 33 | + languages = [lang.name for lang in pycountry.languages if hasattr(lang, "name")] |
| 34 | + language = random.choice(languages) |
| 35 | + |
| 36 | + # Apply casing |
| 37 | + if case_choice == "upper_colour": |
| 38 | + colour = colour.upper() |
| 39 | + else: |
| 40 | + animal = animal.upper() |
| 41 | + |
| 42 | + # Combine to form password |
| 43 | + password = f"{colour}{number}{animal}{special}" |
| 44 | + print("Generated Password:", password) |
| 45 | + print("Based on Country:", country) |
| 46 | + print("Language Hint:", language) |
| 47 | + |
| 48 | +# Run it |
| 49 | +generate_password() |
0 commit comments