вот код:Почему мой код работает в IDLE, но не при сохранении файла и двойном щелчке по файлу?
# Critter Caretaker
# A virtual pet to care for
class Critter(object):
"""A virtual pet"""
def __init__(self, name, hunger = 0, boredom = 0):
self.name = name
self.hunger = hunger
self.boredom = boredom
def __pass_time(self):
self.hunger += 1
self.boredom += 1
@property
def mood(self):
unhappiness = self.hunger + self.boredom
if unhappiness < 5:
m = "happy"
elif 5 <= unhappiness <= 10:
m = "okay"
elif 11 <= unhappiness <= 15:
m = "frustrated"
else:
m = "mad"
return m
def talk(self):
print("I'm", self.name, "and I feel", self.mood, "now.\n")
self.__pass_time()
def eat(self, food = 4):
print("Brrupp. Thank you.")
self.hunger -= food
if self.hunger < 0:
self.hunger = 0
self.__pass_time()
def play(self, fun = 4):
print("Whee!")
self.boredom -= fun
if self.boredom < 0:
self.boredom = 0
self.__pass_time()
crit_name = input("What do you want to name your critter?: ")
crit = Critter(crit_name)
choice = None
while choice != "0":
print \
("""
Critter Caretaker
0 - Quit
1 - Listen
2 - Feed your critter
3 - Play with your critter
""")
choice = input("Choice: ")
print()
# exit
if choice == "0":
print("Good-bye.")
# listen to your critter
elif choice == "1":
crit.talk()
# feed your critter
elif choice == "2":
crit.eat()
# play with your critter
elif choice == "3":
crit.play()
# some unknown choice
else:
print("\nSorry, but", choice, "isn't a valid choice.")
input("\n\nPress the enter key to exit.")
Когда я запустил его в режиме ожидания, он работает совершенно нормально, но когда я сохранить файл, и дважды щелкните файл, он не будет побежал правильно. Например, когда я выбираю правильный выбор из «0» - «3», он печатает - «не является допустимым выбором». но даже если это неверный выбор, он должен печатать «Извините, но - не допустимый выбор».
извините за мой английский. Пожалуйста, скажите мне, если вы путаетесь с моим английским языком.
Кстати, я в настоящее время изучаю Python из книги под названием «Программирование на языке Python для абсолютного начинающего» - Майклом Доусоном. Должен ли я закончить эту книгу или я должен найти другой способ узнать Python?
Вы случайно перепутали Python 2 и Python 3? – user2357112
Поместите 'print ('type type', type (choice)' в строке после 'input (« Choice: »)'. Если 'choice' является целым числом, он всегда будет сравнивать не равным строке, поэтому все ваши if elif выражения будут False – msw
@msw Предполагая, что программа предназначена для python 3, 'input()' будет по умолчанию использовать строку – user3636636