Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+4

Помогите пожалуйста с задаче по Python

Задача 5. Весёлая ферма 2
Мы продолжаем писать игру «Весёлая ферма» и теперь необходимо её немного модернизировать. Всё-таки кому-то же нужно собирать урожай, и для этого нам понадобится садовник, который имеет:

Имя.
Грядку с растением, за которым он ухаживает (в нашем случае пока только грядка с картошкой).


И может:

Ухаживать за грядкой.
Собирать с неё урожай (количество картошки ― пустой список).
вот мой код:
class Potato:
states = {0: 'Отсутствует', 1: 'Росток', 2: 'Зелёная', 3: 'Зрелая'}

def __init__(self, index):
self.index = index
self.state = 0

def grow(self):
if self.state < 3:
self.state += 1
self.print_state()

def is_ripe(self):
if self.state == 3:
return True
return False

def print_state(self):
print('Картошка {} сейчас {}'.format(
self.index, Potato.states[self.state]
))

class PotatoGarden:

def __init__(self, count):
self.potatoes = [Potato(index) for index in range(1, count + 1)]

def grow_all(self):
print('Картошка проростает!')
for i_potato in self.potatoes:
i_potato.grow()

def are_all_ripe(self):
for i_potato in self.potatoes:
if not i_potato.is_ripe():
print('Картошка ещё не созрела!\n')
break
else:
print('Вся картошка созрела! Можно собирать!\n')


class Gardener:
gardener_name = input('Введите имя садовника: ')
gardener_bed = input('Грядка с растением за которым ухаживает садовник: ')
states_of_care = {0: 'Поливает', 1: 'Окучивает', 2: 'Подкармливает', 3: 'Обрабатывает'}

def __init__(self):
self.state_of_care = 0
self.count_potato = []

def print_state_of_care(self):
print('Садовник сейчас {} картошку'.format(
Gardener.states_of_care[self.state_of_care]
))

def take_care_of_the_garden(self):
if self.state_of_care < 3:
self.state_of_care += 1
self.print_state_of_care()
if self.state_of_care == 3:
return True
return False

def harvest(self):
pass


my_garden = PotatoGarden(5)
my_garden.are_all_ripe()
for _ in range(3):
my_garden.grow_all()
my_garden.are_all_ripe()
Я застопорился на месте собирания урожая и не могу понять как это сделать.
Буду очень рад если кто-то поможет!

По дате
По рейтингу
Аватар пользователя
Знаток

class Potato:
states = {0: 'Отсутствует', 1: 'Росток', 2: 'Зеленая', 3: 'Зрелая'}

def __init__(self, index):
self.index = index
self.state = 0

def grow(self):
if self.state < 3:
self.state += 1
self.print_state()

def is_ripe(self):
if self.state == 3:
return True
return False

def print_state(self):
print('Картошка {} сейчас {}'.format(self.index, Potato.states[self.state]))

class PotatoGarden:

def __init__(self, count):
self.potatoes = [Potato(index) for index in range (1, count + 1)]

def are_all_ripe(self):
if not all([i_potato.is_ripe() for i_potato in self.potatoes]):
print('Картошка еще не созрела! \n')
else:
print('Вся картошка созрела! Можно собирать. \n')

def grow_all(self):
print('Картошка растет!')
for i_potato in self.potatoes:
i_potato.grow()

class Gardener:
def __init__(self, name, collected_potatoes):
self.name, self.collected_potatoes = name, collected_potatoes

def gardener_info(self):
print('Имя садовника: {}\nСколько собрал картошки: {}\n'.format(self.name, self.collected_potatoes))

def tend(worker, my_garden):
if all([i_potato.is_ripe() for i_potato in my_garden.potatoes]):
question = int(input('Собрать картошку? \n1 - да, 2 - нет\n'))
if question == 1:
potato_count = 0
for i_potato in my_garden.potatoes:
worker.collected_potatoes += 1
potato_count += 1
i_potato.state = 0

print('{} собрал {} картофелин!'.format(worker.name, potato_count))
worker.gardener_info()
else:
question = int(input('Отправить {}а ухаживать за картошкой? \n 1 - да, 2 - нет\n'.format(worker.name)))
if question == 1:
my_garden.grow_all()
my_garden.are_all_ripe()

my_garden = PotatoGarden(5)
worker = Gardener('Петрович', 0)

while True:
Gardener.tend(worker, my_garden)

Аватар пользователя
Ученик
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
 class Potato: 
    states = {1: 'Росток', 2: 'Зелёная', 3: 'Зрелая'} 
 
    def __init__(self, index): 
        self.index = index 
        self.state = 0 
 
    def is_ripe(self): 
        if self.state == 3: 
            return True 
        return False 
 
    def grow(self): 
        if self.state < 3: 
            self.state += 1 
        self.info() 
 
    def info(self): 
        print(f'Картошка {self.index} сейчас {Potato.states[self.state]}') 
 
 
class PotatoGarden: 
 
    def __init__(self, count, care_status=False): 
        self.potatoes = [Potato(index) for index in range(1, count + 1)] 
        self.care_status = care_status 
 
    def all_grow(self): 
        for i_potato in self.potatoes: 
            i_potato.grow() 
 
    def are_all_ripe(self): 
        if not all([i_potato.is_ripe() for i_potato in self.potatoes]): 
            print('Картошка ещё не созрела!') 
        else: 
            print('Вся картошка созрела. Можно собирать!') 
            return True 
 
 
class Gardener: 
    harvest = [] 
 
    def __init__(self, name, garden: int): 
        self.name = name 
        self.garden = PotatoGarden(garden) 
 
    def taking_care(self): 
        if not self.garden.care_status: 
            question = input('Грядка не ухожена. Хотите за ней ухаживать ? ').lower() 
            if question == 'да': 
                self.garden.care_status = True 
                print(f'Грядка стала ухоженной, спасибо {self.name} !\n') 
        else: 
            print(f'С грядкой все в порядке, {self.name} может отдыхать!\n') 
 
    def collecting_harvest(self): 
        if self.garden.are_all_ripe(): 
            question = input('Собирать урожай? ') 
            if question == 'да': 
                self.harvest.append(f'Урожай {len(self.harvest) + 1}') 
                print(f'Собранные урожаи: {self.harvest}\n') 
                for i_potato in self.garden.potatoes: 
                    i_potato.state = 0    # обнуляем состояние картошки в изначальную 
                    self.garden.care_status = False   # меняем состояние грядки в неухоженную 
        else: 
            print('Урожай не готов пока.\n') 
            self.garden.all_grow() 
 
 
my_gardener = Gardener('Василий', 5) 
 
for _ in range(9): 
    my_gardener.collecting_harvest() 
    my_gardener.taking_care() 
 
Аватар пользователя
Ученик

class PotatoGarden:

def __init__(self, count):
self.potatoes = [Potato(index) for index in range(1, count + 1)]

def grow_all(self):
print('Картошка прорастает! ')
for i_potato in self.potatoes:
i_potato.grow()

def are_all_ripe(self):
if not all([i_potato.is_ripe() for i_potato in self.potatoes]):
print('Картошка еще не созрела! \n')
else:
print('Вся картошка созрела. Можно собирать')

class Gardener:
def __init__(self, name, collected_potatoes):
[ссылка заблокирована по решению администрации проекта] = name
self.collected_potatoes = collected_potatoes

def gardener_info(self):
print('Имя садовника: {}\nСколько собрал картошки: {}\n'.format( [ссылка заблокирована по решению администрации проекта] , self.collected_potatoes))
```

Аватар пользователя
Просветленный

Вопрос в том что эта функция делать должна . Вот я не очень понял. То ли просто обнулять, то ли выросшую убирать