Difference between revisions of "CSC111 Eliza Class program"
(Created page with "--~~~~ ---- <source lang="python"> # eliza.py # # a very simple beginning for an eliza-like program # # 1) greet user # 2) repeat a huge number of times: # 2.1) get user's st...") |
|||
(One intermediate revision by the same user not shown) | |||
Line 4: | Line 4: | ||
# eliza.py | # eliza.py | ||
# | # | ||
− | # | + | # This program was developed in class. It is poorly documented, |
− | + | # and is provided here only to help with the note-taking. | |
− | + | ||
− | |||
− | |||
− | # | ||
− | |||
− | |||
− | |||
− | |||
import random | import random | ||
Line 29: | Line 22: | ||
"""display statement picking up on negativity | """display statement picking up on negativity | ||
""" | """ | ||
− | canned = [ " | + | canned = [ "My, my, so negative today!", |
− | " | + | "Really?", "You should be more positive", |
− | "take a break!" ] | + | "Maybe you should take a break!" ] |
print( random.choice( canned ) ) | print( random.choice( canned ) ) | ||
− | def cannedFamily(): | + | def cannedFamily( member ): |
− | canned = [ " | + | """display a random statement about the user's family, |
− | "is that always the case | + | or the particular member the user listed in her answer""" |
+ | |||
+ | canned = [ "How do you feel about your " + member, | ||
+ | "is that always the case in your family", | ||
+ | "tell me more about your "+member ] | ||
+ | |||
print( random.choice( canned ) ) | print( random.choice( canned ) ) | ||
Line 65: | Line 63: | ||
if answer.find( member ) != -1: | if answer.find( member ) != -1: | ||
found = 1 | found = 1 | ||
+ | break | ||
if found != 0: | if found != 0: | ||
− | cannedFamily() | + | cannedFamily( member ) |
continue | continue | ||
# reflection | # reflection | ||
+ | # split the answer into a list of words | ||
words = answer.split() | words = answer.split() | ||
+ | |||
+ | # create a new list with the same words | ||
newWords = [] | newWords = [] | ||
for word in words: | for word in words: | ||
newWords.append( word ) | newWords.append( word ) | ||
+ | # go through all the words in the original list | ||
+ | # and reflect them in the new list. | ||
for i in range( len( words ) ): | for i in range( len( words ) ): | ||
if words[i] == "I": | if words[i] == "I": | ||
Line 80: | Line 84: | ||
if words[i] == "you": | if words[i] == "you": | ||
newWords[i] = "me" | newWords[i] = "me" | ||
+ | |||
+ | # if the two lists of words are different, we must have | ||
+ | # reflected some words... | ||
if words != newWords: | if words != newWords: | ||
− | print( ' '.join( newWords ) + '?') | + | print( ' ' . join( newWords ) + '?') |
continue | continue | ||
− | # respond semi-intelligently | + | # respond semi-intelligently if we couldn't detect anything |
− | # | + | # relating to negativity, family, or reflection |
cannedAnswer() | cannedAnswer() | ||
+ | # we get here when the user quits. | ||
print( "it was nice chatting with you" ) | print( "it was nice chatting with you" ) | ||
Latest revision as of 11:20, 27 October 2011
--D. Thiebaut 11:52, 27 October 2011 (EDT)
# eliza.py
#
# This program was developed in class. It is poorly documented,
# and is provided here only to help with the note-taking.
import random
def cannedAnswer():
"""display a random canned answer.
"""
canned = [ "\nPlease tell me more",
"\nI see...",
"\nI am listening..." ]
print( random.choice( canned ) )
def cannedNegative():
"""display statement picking up on negativity
"""
canned = [ "My, my, so negative today!",
"Really?", "You should be more positive",
"Maybe you should take a break!" ]
print( random.choice( canned ) )
def cannedFamily( member ):
"""display a random statement about the user's family,
or the particular member the user listed in her answer"""
canned = [ "How do you feel about your " + member,
"is that always the case in your family",
"tell me more about your "+member ]
print( random.choice( canned ) )
def main():
# greet user
print( "Welcome. Please tell me of your problems: " )
print( '(You may quit at any time by answering "bye")' )
# repeat a huge number of times
for i in range( 100000 ):
# get user's statement about her life
answer = input( "\n> " )
if ( answer.lower() == "bye" ):
break
# negative answer
neg = [ "no", "never" ]
if answer.lower() in neg:
cannedNegative()
continue
# family member
family = ["mother", "father", "sister", "brother", "dog" ]
found = 0
for member in family:
if answer.find( member ) != -1:
found = 1
break
if found != 0:
cannedFamily( member )
continue
# reflection
# split the answer into a list of words
words = answer.split()
# create a new list with the same words
newWords = []
for word in words:
newWords.append( word )
# go through all the words in the original list
# and reflect them in the new list.
for i in range( len( words ) ):
if words[i] == "I":
newWords[i] = "you"
if words[i] == "you":
newWords[i] = "me"
# if the two lists of words are different, we must have
# reflected some words...
if words != newWords:
print( ' ' . join( newWords ) + '?')
continue
# respond semi-intelligently if we couldn't detect anything
# relating to negativity, family, or reflection
cannedAnswer()
# we get here when the user quits.
print( "it was nice chatting with you" )
main()