-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlab02.py
75 lines (60 loc) · 3.26 KB
/
lab02.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
class Tree:
def __init__(self, info, children=[]):
self.children = children
self.info = info
def initOptionTree():
return Tree("Seu SO anterior era Linux?", [
Tree("Seu SO anterior era um MacOS?", [
Tree("Ubuntu Mate, Ubuntu Mint, Kubuntu, Manjaro."),
Tree("ElementaryOS, ApricityOS.")
]), Tree("É programador/ desenvolvedor ou de áreas semelhantes?", [
Tree("Ubuntu Mint, Fedora."), Tree(
"Gostaria de algo pronto para uso ao invés de ficar configurando o SO?", [
Tree("Já utilizou Arch Linux?", [
Tree("Antergos, Arch Linux."), Tree(
"Gentoo, CentOS, Slackware.")
]), Tree(
"Já utilizou Debian ou Ubuntu?", [
Tree("OpenSuse, Ubuntu Mint, Ubuntu Mate, Ubuntu."), Tree(
"Manjaro, ApricityOS.")
])
]),
Tree("Kali Linux, Black Arch."),
])])
root = initOptionTree()
def displayNextOption(option, node):
if len(node.children) > 0:
node = node.children[option]
return node
return None
def buildOptString(questionOrAnswer, options):
formattedOptions = ""
for x in range(0, len(options)):
formattedOptions += "(" + str(x) + ") " + \
options[x] + ("\n" if x != len(options) - 1 else "")
return "%s\n%s" % (questionOrAnswer, formattedOptions)
def definePath(selecteOptions):
if (selecteOptions[0] == 0):
return "Você passará pelo caminho daqueles que decidiram abandonar sua zona de conforto, as distribuições recomendadas são: " # motivação
if (selecteOptions[0] == selecteOptions[len(selecteOptions) - 1]):
return "Suas escolhas te levaram a um caminho repleto de desafios, para você recomendamos as distribuições: " # desafio
if (selecteOptions[0] == 1 and (selecteOptions[len(selecteOptions) - 1] == 0 or selecteOptions[len(selecteOptions) - 1] == 2)):
return "Ao trilhar esse caminho, um novo guru do Linux irá surgir, as distribuições que servirão de base para seu aprendizado são: " # aprendizado
def main():
print("Este é um sistema que irá te ajudar a escolher a sua próxima Distribuição Linux. Responda a algumas poucas perguntas para ter uma recomendação.")
current = root
selecteOptions = []
while current != None:
print(buildOptString((definePath(selecteOptions) + current.info if len(current.children) == 0 else current.info), (["Não", "Sim"] if len(current.children) != 0 else []) + ([
"Sim, realizo testes e invasão de sistemas"] if len(current.children) == 3 else [])))
if len(current.children) != 0:
try:
currentOption = int(input())
if currentOption >= len(current.children):
raise Exception
except:
print("Opção inválida, recomece o questionário.")
break
selecteOptions += [currentOption]
current = displayNextOption(currentOption, current)
main()