Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python3
- """
- Random Name Generator.
- Combines characters to create a reasonably pronouncable name.
- """
- import random
- import sys
- vowels = ["a","e","i","o","u","y"]
- consonants = [
- # Simple
- "b", "c", "d", "f", "g", "h", "j", "k", "l", "m", "n", "p", "q", "r", "s", "t", "v", "w", "x", "y", "z",
- # Compund
- "sh", "ch", "th"
- ]
- def generate_name():
- name_length = random.randint(3,10)
- new_name = ""
- last_was_vowel = False
- last_space = 0
- force_vowel = False
- force_consonant = False
- for i in range(name_length):
- is_vowel = False if force_consonant else (force_vowel or (random.randint(1,2)==1))
- # Generate Space
- if i>(last_space+2) and i<(name_length-2):
- if random.randint(1,3)==1:
- new_name = new_name + " "
- last_space = i
- force_vowel = False
- force_consonant = False
- # Select next character
- next_char_list = vowels if is_vowel else consonants
- new_char = next_char_list[ random.randint(0,len(next_char_list)-1) ]
- # Upper-case if appropriate
- if (last_space==i):
- if len(new_char)<=1:
- new_char = new_char.upper()
- else:
- new_char = new_char[0].upper() + new_char[1:]
- new_name = new_name + new_char
- # Set up flags for next iteration
- force_vowel = (not is_vowel) and (not last_was_vowel)
- force_consonant = is_vowel and last_was_vowel
- last_was_vowel = is_vowel
- return new_name
- if __name__ == '__main__':
- name_count = 30
- try:
- name_count = int(sys.argv[1])
- except (ValueError,IndexError) as e:
- pass
- if name_count<0:
- name_count = 0
- print( "\nGenerating Names" )
- print( "----------------" )
- for i in range(name_count):
- print( generate_name() )
- print( f"\nNames generated: {name_count}\n" )
- pass
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement