blob: b53dbbec3c1f6d9e04523dbcdef5b1196eaa6a77 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
import random
def getTrigrams(filename):
#Gets trigrams from the file
f = open(filename)
d = {}
for line in f:
key = line[:3]
value = line.strip('\n')[4:]
d[key] = int(value)
return d
trigrams = getTrigrams('trigrams.txt')
def nextchar(previous=False):
if previous != False:
possibleTrigrams = {}
for trigram in trigrams:
if trigram[0:2] == previous:
possibleTrigrams[trigram] = trigrams[trigram]
possibleSum = 0
for trigram in possibleTrigrams:
possibleSum += possibleTrigrams[trigram]
trigramChosen = random.randrange(possibleSum)
x = 0 #The variable for the sum of all the previous trigrams
for trigram in possibleTrigrams:
x += possibleTrigrams[trigram]
if trigramChosen <= x:
return trigram[2]
else:
firstTrigrams = {}
for trigram in trigrams:
if trigram[0] == ' ':
firstTrigrams[trigram] = trigrams[trigram]
firstSum = 0
for trigram in firstTrigrams:
firstSum += firstTrigrams[trigram]
trigramChosen = random.randrange(firstSum)
x = 0 #The variable for the sum of all the previous trigrams
for trigram in firstTrigrams:
x += firstTrigrams[trigram]
if trigramChosen <= x:
if ' ' in trigram[1:]: #If there's a space in the trigram, try again
return nextchar()
else:
return trigram[1:]
def generate():
char = nextchar()
name = ''
while char != ' ':
name += char
char = nextchar(name[-2:])
return name.capitalize()
if __name__ == '__main__':
print('Welcome to NameMaker!')
print('Please enter the number of names you want to print out!')
while True:
number = int(input('Number: '))
for i in range(number):
print(generate())
|