Skip to content

Instantly share code, notes, and snippets.

@codecademydev
Created September 19, 2020 14:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save codecademydev/4ef9347a2b88df084ac2358ea518baa1 to your computer and use it in GitHub Desktop.
Save codecademydev/4ef9347a2b88df084ac2358ea518baa1 to your computer and use it in GitHub Desktop.
Codecademy export
# importing regex and random libraries
import re
import random
class AlienBot:
# potential negative responses
negative_responses = ("no", "nope", "nah", "naw", "not a chance", "sorry")
# keywords for exiting the conversation
exit_commands = ("quit", "pause", "exit", "goodbye", "bye", "later")
# random starter questions
random_questions = (
"Why are you here? ",
"Are there many humans like you? ",
"What do you consume for sustenance? ",
"Is there intelligent life on this planet? ",
"Does Earth have a leader? ",
"What planets have you visited? ",
"What technology do you have on this planet? "
)
def __init__(self):
self.alienbabble = {'describe_planet_intent': (r'.*\s*your planet.*'),
'answer_why_intent': r'why\sare.*',
'cubed_intent': r'.*cube.*(\d+)'
}
# Define .greet() below:
def greet(self):
self.name = input('Hello, what is your name? \n>')
will_help = input(f'Hi {self.name}, I\'m Etcetera. I\'m not from this planet. Will you help me learn about your planet? \n>')
if will_help in self.negative_responses:
return print('Ok, have a nice Earth day!')
return self.chat()
# Define .make_exit() here:
def make_exit(self, reply):
for i in self.exit_commands:
if i in reply:
print('Ok, have a nice Earth day!')
return True
# Define .chat() next:
def chat(self):
reply = input(random.choice(self.random_questions))
while not self.make_exit(reply):
reply = input(self.match_reply(reply))
# Define .match_reply() below:
def match_reply(self, reply):
for intent,regex_pattern in self.alienbabble.items():
found_match = re.match(regex_pattern,reply)
if found_match and intent == 'describe_planet_intent':
return self.describe_planet_intent()
elif found_match and intent == 'answer_why_intent':
return self.answer_why_intent()
elif found_match and intent =='cubed_intent':
return self.cubed_intent(found_match.groups()[0])
else:
return self.no_match_intent()
# Define .describe_planet_intent():
def describe_planet_intent(self):
responses = ('My planet is a utopia of diverse organisms and species.','I am from Opidipus, the capital of the Wayward Galaxies')
return random.choice(responses)
# Define .answer_why_intent():
def answer_why_intent(self):
responses = ('I come in peace','I am here to collect data on your planet and its inhabitants','I heard the coffee is good')
return random.choice(responses)
# Define .cubed_intent():
def cubed_intent(self, number):
number = int(number)
cubed_number = number**3
return print(f"The cubed number is {cubed_number}")
# Define .no_match_intent():
def no_match_intent(self):
responses = ('Please tell me more.','Tell me more!','Why do you say that?','I see. Can you elaborate','Interesting. Can you tell me more?', 'I see. How do you think?','Why?','How do you think i feel when you say that?')
return random.choice(responses)
# Create an instance of AlienBot below:
my_bot = AlienBot()
my_bot.greet()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment