-
Notifications
You must be signed in to change notification settings - Fork 0
/
vocabTest.py
79 lines (62 loc) · 2.14 KB
/
vocabTest.py
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
70
71
72
73
74
75
76
77
78
79
import csv
import random
from os import system
from time import sleep
def row_count(filename):
with open(filename) as in_file:
return sum(1 for _ in in_file)
def main():
filename = 'vocab/JadenVocab.csv'
last_line_number = row_count(filename)
# print(last_line_number)
with open(filename) as csv_file:
ans = random.randint(1,last_line_number)
samples = random.sample(range(1,last_line_number),5)
if not(ans in samples):
# answer is not in the sample, so replace one sample with answer
samples[random.randint(0,4)] = ans
system('clear') # clear screen
print(samples)
print(ans)
csv_reader = csv.reader(csv_file, delimiter=',')
next(csv_reader) # skip header row
line_number = 0
sample_number = 1
# first pass to get the answer word, and definition
for row in csv_reader:
line_number += 1
if line_number == ans:
ans_word = row[0]
ans_definition = row[1]
print(f"What is the definition of \'{ans_word}\'?")
print('\n')
csv_file.seek(0) #go back to top of the file
next(csv_reader) # skip header row
# print answer choices
line_number = 0
sample_number = 1
samples_to_answers = dict()
for row in csv_reader:
line_number += 1
if line_number in samples:
print(f"{sample_number}. {row[1]}")
samples_to_answers[str(sample_number)] = line_number
sample_number += 1
print("\n")
print(samples_to_answers)
print("\n")
choice = input("Choose your answer: ")
if samples_to_answers[choice] == ans:
print("Correct!")
else:
print("Wrong!!!")
main()
keep_running = True
while keep_running:
print("\n")
to_continue = input("Type \'y\' to continue, \'n\' to exit: (default=y) ")
if to_continue == 'n':
print("Good Bye!")
keep_running = False
else:
main()