Майкл Доусон - Программируем на Python 8 глава задача 4
Напишите программу «Зооферма», в которой будет создано несколько объектов класса Critter, а манипулировать ими всеми можно будет с помощью списка. Теперь пользователь должен заботиться не об одной зверюшке, а обо всех обитателях зоофермы. Выбирая пункт в меню, пользователь выбирает действие, которое хотел бы выполнить со всеми зверюшками: покормить их, поиграть с ними или узнать об их самочувствии. Чтобы программа была интереснее, при создании каждой зверюшки следует назначать ей случайно выбранные уровни голода и уныния.
# Farm Caretaker
# A virtual farm to care for
import random
class Farm(object):
"""A virtual pet"""
def __init__(self, name):#Метод конструктор
self.name = name
self.hunger = random.randint(0, 16)
self.boredom = random.randint(0, 16)
def __str__(self):#Метод вывода на экран
rep = 'Name: ' + self.name + '\n' + 'Hunger: ' + str(self.hunger) + '\n' + 'Boredom: ' + str(self.boredom)
return rep
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.")
self.__pass_time()
@staticmethod
def number(number=None, c=0, m=0):#Метод для ввода и проверки на
while c==0: #ошибки численных значений кормежки и игры
number=input('How many? Write from 0 to infinity ')
try:
m=int(number)
c=1
except:
print('Try again')
if int(number)<0:
number=0
else:
number=m
return number
def eat(self, food):#Кормежка
self.hunger -= food
if self.hunger < 0:
self.hunger = 0
self.__pass_time()
def play(self, fun):#Игра
self.boredom -= fun
if self.boredom < 0:
self.boredom = 0
self.__pass_time()
def main():#Основная функция
print('Welcome to the farm! Now you have a cow, a pig and a goat. Let\'s give them names.')
crit_name = input("What do you want to name your cow?: ")
cow = Farm(crit_name)
crit_name = input("What do you want to name your pig?: ")
pig = Farm(crit_name)
crit_name = input("What do you want to name your goat?: ")
goat = Farm(crit_name)
choice = None
numb=None
while choice != "0":
print \
("""
Farm Caretaker
0 - Quit
1 - Listen to your livestock
2 - Feed your livestock
3 - Play with your livestock
""")
choice = input("Choice: ")
print()
# exit
if choice == "0":
print("Good-bye.")
# listen to your livestock
elif choice == "1":
cow.talk()
print('moo-mooo.\n')
pig.talk()
print('oink, oink.\n')
goat.talk()
print('ba-a-ba-a.\n')
# feed your livestock
elif choice == "2":
numb=Farm.number()
cow.eat(numb)
print("Mooo. Thank you.")
pig.eat(numb)
print("Oink. Thank you.")
goat.eat(numb)
print("Baaa. Thank you.")
# play with your livestock
elif choice == "3":
numb=Farm.number()
cow.play(numb)
pig.play(numb)
goat.play(numb)
print("Wheee! Wheee! Wheee!")
#secret
elif choice =="4":
print(cow)
print(pig)
print(goat)
# some unknown choice
else:
print("\nSorry, but", choice, "isn't a valid choice.")
main()
("\n\nPress the enter key to exit.")
# Farm Caretaker
# A virtual farm to care for
import random
class Farm(object):
"""A virtual pet"""
def __init__(self, name):#Метод конструктор
self.name = name
self.hunger = random.randint(0, 16)
self.boredom = random.randint(0, 16)
def __str__(self):#Метод вывода на экран
rep = 'Name: ' + self.name + '\n' + 'Hunger: ' + str(self.hunger) + '\n' + 'Boredom: ' + str(self.boredom)
return rep
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.")
self.__pass_time()
@staticmethod
def number(number=None, c=0, m=0):#Метод для ввода и проверки на
while c==0: #ошибки численных значений кормежки и игры
number=input('How many? Write from 0 to infinity ')
try:
m=int(number)
c=1
except:
print('Try again')
if int(number)<0:
number=0
else:
number=m
return number
def eat(self, food):#Кормежка
self.hunger -= food
if self.hunger < 0:
self.hunger = 0
self.__pass_time()
def play(self, fun):#Игра
self.boredom -= fun
if self.boredom < 0:
self.boredom = 0
self.__pass_time()
def main():#Основная функция
print('Welcome to the farm! Now you have a cow, a pig and a goat. Let\'s give them names.')
crit_name = input("What do you want to name your cow?: ")
cow = Farm(crit_name)
crit_name = input("What do you want to name your pig?: ")
pig = Farm(crit_name)
crit_name = input("What do you want to name your goat?: ")
goat = Farm(crit_name)
choice = None
numb=None
while choice != "0":
print \
("""
Farm Caretaker
0 - Quit
1 - Listen to your livestock
2 - Feed your livestock
3 - Play with your livestock
""")
choice = input("Choice: ")
print()
# exit
if choice == "0":
print("Good-bye.")
# listen to your livestock
elif choice == "1":
cow.talk()
print('moo-mooo.\n')
pig.talk()
print('oink, oink.\n')
goat.talk()
print('ba-a-ba-a.\n')
# feed your livestock
elif choice == "2":
numb=Farm.number()
cow.eat(numb)
print("Mooo. Thank you.")
pig.eat(numb)
print("Oink. Thank you.")
goat.eat(numb)
print("Baaa. Thank you.")
# play with your livestock
elif choice == "3":
numb=Farm.number()
cow.play(numb)
pig.play(numb)
goat.play(numb)
print("Wheee! Wheee! Wheee!")
#secret
elif choice =="4":
print(cow)
print(pig)
print(goat)
# some unknown choice
else:
print("\nSorry, but", choice, "isn't a valid choice.")
main()
("\n\nPress the enter key to exit.")
А как насчет манипуляцией со списком?
ОтветитьУдалитьhttps://pastebin.com/8CZmw6cH
ОтветитьУдалитьЗдесь один из вариантов