Я изменил ваш код Choices.py
class Choices:
answer = False
#Constructor
def __init__(self):
self.answer = False
#Initial Choice
def c(self):
self.answer = False
while True:
print "What would you like to do?" #Question
reply = raw_input("[1] Make Breakfast [2] Get Dressed") #Answers
if str(reply) == "1": #Choices
print "You get up." #Actions
self.answer = True
return reply
elif reply == "2": #Choices
print "You sleep more." #Actions
self.answer = True
return reply
else:
print "Not a choice."
#Branch 1
def c1(self):
self.answer = False
while True:
print "What would you like to do?" #Question
reply = raw_input("[1] Make Breakfast [2] Get Dressed") #Answers
if reply == "1": #Choices
print "You go to the kitchen and make some oatmeal." #Actions
self.answer = True
return reply
elif reply == "2": #Choices
print "You go to the closet and put on some day clothes." #Actions
self.answer = True
return reply
else:
print "Not a choice."
#Branch 2
def c2(self):
self.answer = False
while True:
print "What would you like to do?" #Question
reply = raw_input("[1] Make Breakfast [2] Get Dressed") #Answers
if reply == "1": #Choices
print "You get up." #Actions
self.answer = True
return reply
elif reply == "2": #Choices
print "You begin to dream. You are wandering in a forest, when you come to a crossroads..." #Actions
self.answer = True
return reply
else:
print "Not a choice."
Первая проблема заключается в том, что input
,
raw_input()
обрабатывает весь ввод как строку и возвращает тип строки.
input()
имеет свои особенности при работе с чисто числовым вводом и возвращает тип введенного числа (int, float).
Вы не можете сравнить Interger
с string
.
Вторая проблема - когда вы заканчиваете один метод и переходите к c1
или c2
, он не запустится, потому что перед вами return reply
ваш ответ всегда будет True
,Таким образом, в следующем методе while self.answer == False
равен while False
, и он просто ничего не будет делать.