I just created a "who's your daddy?" program--one of the challenges in the
michael dawson book.
It was working well, and I tested all the different instructions, and then
for some reason, it stopped working. Specifically, whenever I enter the name
of a father, it tells me it doesn't exist, although it does, because when you
list all the fathers, you can see it exists, and I set it up in the
dictionary.
It may be that I've missed something. I know I saved this program so many
times, maybe I changed something without realising it, although I've been
through every line of code numerous times. I don't know how to use the IDLE
debugger, which could be part of my problem. The help file doesn't seem to
help.
Here's the code:
# This program lets the user enter the first and last name of a male
#
and produces the name of his son. The user will also be able
# to add,
replace, and delete son-father pairs.
father_son = {"Kirk Douglas" : "Michael
Douglas",
"James Brolin" : "Josh
Brolin",
"Marlon Brando" : "Christian
Brando",
"George Best" : "Calum
Best",
"David Beckham" : "Brooklyn
Beckham",
"Bob Dylan" : "Jakob Dylan"}
choice = None
while choice != "0":
print \
"""
Welcome to Who's Your Daddy? A mini database
of fathers and sons.
When entering names,
please use both the first name and the last
name.
0 -
Exit
1 - List all
Father-Son Pairs
2 -
List all Fathers
3 -
Look Up Father-Son
Pairs
4 - Add a
Father-Son Pair
5 -
Delete a Father-Son
Pair
6 - Replace the
Son of a Father-Son
Pair
7 - Replace a
Father-Son Pair
"""
choice = raw_input("Choice: ")
print
# exit program
if choice ==
"0":
print "\nGoodbye."
# list all father-son pairs
elif
choice == "1":
print "\nLIST OF
ALL FATHER-SON PAIRS\n"
print
father_son
# list all fathers
elif choice ==
"2":
print "LIST OF ALL
FATHERS\n"
for father_son in
father_son:
print father_son
# look up father-son pairs
elif
choice == "3":
term =
raw_input("Type in the name of the father of this pair:
")
if term in
father_son:
definition =
father_son[term]
print term, "is the father of",
definition
else:
print "\nSorry,", term, "doesn't exist."
# add a father-son pair
elif
choice == "4":
term =
raw_input("Type in the name of the father you want to add:
")
if term not in
father_son:
definition = raw_input("Type in the name of this person's son:
")
father_son[term] =
definition
print "\nThank you. Your new father-son pair has been
added."
print term, "is the father of",
definition
else:
print term, "already exists in the database. Try updating the entry."
# delete a father-son pair
elif
choice == "5":
term =
raw_input("Type in the name of the father which corresponds
\
to the father-son pair you
want to delete: ")
if term in
father_son:
definition =
father_son[term]
del
father_son[term]
print term, "and his son", definition, "have been removed from the
database."
else:
print "\nI don't recognise this name. Try adding it as an
entry."
# replace the son of a father-son
pair
elif choice ==
"6":
term = raw_input("Type in
the name of the father whose son you want
\
to replace:
")
if term in
father_son:
definition = raw_input("Type in the name of this person's son:
")
father_son[term] =
definition
print "\nThank you. Your change has been made.", term, "is now
\
the
father of", definition
else:
print "\nSorry, that name doesn't exist."
# replace a father-son pair
elif
choice == "7":
term =
raw_input("Type in the name of the father which corresponds
\
to the father-son pair you
want to replace: ")
if term in
father_son:
term = raw_input("Type in name of this 'replacement' father:
")
definition = raw_input("Type in the name of this person's son:
")
father_son[term] =
definition
print "A new father-son pair has been added.", term, "is the
\
father
of", definition
else:
print "\nSorry, but",
choice, "isn't a valid choice."
raw_input("\n\nPress the enter key to
exit")