Ошибка с математическим уравнением

#python

#python

Вопрос:

Моя проблема в том, что если вы посмотрите на переменную ‘support’. (В списке переменных) это не относится к текущему потреблению. например Если я нажимаю «S» и «enter», чтобы начать игру, затем нажимаю «M», чтобы отобразить миссии, затем нажимаю «S», чтобы выбрать миссию выживших. И я получаю 2 выживших. По какой-то причине это количество не будет добавляться к поддержке и отображать «Вы потребляете 0,5 бла-бла-бла», а не «Вы потребляете 0,7 бла-бла-бла», как должно быть добавлено 0,1 на человека? Извините, если это трудно понять, я только 11 пытаюсь программировать! импортируйте случайное изображение из PIL import Image

 print('x1b[6;30;42m'   'Zombie Survival Simulator'   'x1b[0m')
print "Press [S] to start!"
resp = raw_input()
if 's' in resp or 'S' in resp:
    foodmission = ['Convience Store','Grocery Store','Restraunt','Food Storage Area']
    watermission = ['Convience Store', 'Old Gas Station', 'Water Tower','Toppled Coca-Cola truck.']
    survivormission = ['Abandoned Refugee Camp','Bus','Army Camp','Train Station']
    "FOOD"
    #Pick Area
    def pickfoodMission():
        foodmis = random.choice(foodmission)
        return foodmis
    #Chance to get food
    def chanceFood():
        foodcha = random.randint(1,20)
        return foodcha
    #How much food you gain a mission
    def foodPickup():
        foodpick = random.randint(1,2)
        return foodpick
    "WATER"
    #Pick the area
    def pickwaterMission():
        watermis = random.choice(watermission)
        return watermis
    #Chance for getting water
    def chancewater():
        watercha = random.randint(1,20)
        return watercha
    #Number of water you gain a mission
    def waterPickup():
        waterpick = random.randint(1,2)
        return waterpick
    "SURVIVORS"
    #Pick the area
    def picksurvivorMission():
        survivormis = random.choice(survivormission)
        return survivormis
    #Chance for getting water
    def chancehuman():
        humancha = random.randint(1,20)
        return humancha
    #Number of water you gain a mission
    def humanPickup():
        humanpick = random.randint(1,2)
        return humanpick


    food = 3
    water = 3
    human = 5
    healthy = 0
    con = 0.1
    level = 1
    game = 1
    new = 1
    foodcon = 0
    watercon = 0
    support = 0.1 * human
    newhuman = (human   (1   (human / 5))   healthy)
    newwater = (water   (1   (human / 5))   healthy)
    newfood = (water   (1   (human / 5))   healthy)
    while game == 1:
        if food <= 0 or water <= 0:
            print('x1b[7;30;41m'   'You and your friends are dead.'   '33[3m')
            break
        if food >= 3 or water >= 3:
            healthy = healthy   1
        if food <= 2 or water <= 2:
            healthy = healthy - 1
        print "Current Resources: Food: "  str(food)   " Day(s) Water: "   str(water)   " Day(s)"
        print "Current Survivors "   str(human)
        if healthy <= -3 and healthy >= -1:
            print "Current Survivors are "   ('x1b[7;30;41m'   'Nearly Dead'   '33[3m')
        if healthy == 0:
            print "Current survivors "   ('x1b[7;30;41m'   'Are not healthy'   '33[3m')
        if healthy >= 1 and healthy <= 3:
            print "Current Survivors are "   ('x1b[7;32;43m'   'Ok'   'x1b[0m')
        if healthy >= 3 and healthy <= 5:
            print "Current Survivors are "   ('x1b[7;32;43m'   'Great'   'x1b[0m')
        if healthy >= 5 and healthy <= 7:
            print "Current Survivors are "   ('x1b[7;32;43m'   'Excellent'   'x1b[0m')
        foodcon = support
        watercon = support
        food = food - support
        water = water - support
        print human
        print support
        print "You are consuming "   str(support)   " food and "   str(support)   " water per day"
        if food - support <= 0 or water - support <= 0:
            print('x1b[7;30;41m'   'You will not survive the next day.'   '33[3m')
        print "[M]issions [B]uilding [H]oard [E]nd Day"
        resp = raw_input()
        if 'M' in resp or 'm' in resp:
            print "[F]ood [W]ater [S]urvivor"
            resp = raw_input()
            if 'F' in resp or 'f' in resp:
                foodmis = pickfoodMission()
                print "You go to a "   foodmis
                foodcha = chanceFood()
                if foodcha >= 14:
                    foodpick = foodPickup()
                    food = newfood
                    img = Image.open('food.png')
                    img.show()
                    print('x1b[7;32;43m'   'You are now at '   str(newfood)   ' day(s) of food'   'x1b[0m')
                elif foodcha < 14:
                    print('x1b[7;30;41m'   'You come back empty handed.'   'x1b[0m')
            elif 'w' in resp or 'W' in resp:
                watermis = pickwaterMission()
                print "You go to a "   watermis
                watercha = chancewater()
                if watercha >= 14:
                    waterpick = waterPickup()
                    water = newwater
                    img = Image.open('water.png')
                    img.show()
                    print('x1b[7;32;43m'   'You are now at '   str(newwater)   ' day(s) of water'   'x1b[0m')
                elif watercha <= 14:
                    print('x1b[7;30;41m'   'You come back empty handed.'   'x1b[0m')
            elif 's' in resp or 'S' in resp:
               humanmis = picksurvivorMission()
               print "You go to a "   humanmis
               humancha = chancehuman()
               if humancha >= 14:
                    humanpick = humanPickup()
                    human = newhuman
                    print('x1b[7;32;43m'   'You are now at '   str(human)   ' survivor(s)'   'x1b[0m')
                    img = Image.open('cats.jpg')
                    img.show()
               elif humancha <= 14:
                    print('x1b[7;30;41m'   'You come back with no one else new.'   'x1b[0m')
        if 'B' in resp or 'b' in resp:
            print "[F]ood"
  

Комментарии:

1. вывод «Вы потребляете » str (поддержка) «еда и » str (поддержка) » вода в день» — это оператор печати, который не обновляется.

Ответ №1:

Вы никогда не обновляете свою support переменную после того, как установили ее в первый раз, поэтому каждый раз, когда вы ее распечатываете, она одинакова. Поскольку support зависит от human , вы должны либо пересчитывать support каждый раз human при обновлении, либо иметь подобную функцию calculate_support() , которая вычисляет ее, когда вам это нужно.

Ответ №2:

Насколько я могу судить с первого взгляда, вы присваиваете значение переменной ‘support’ только один раз в коде:

 support = 0.1 * human
  

и я не думаю, что этот код будет запущен снова. Как только служба поддержки получит значение с помощью этого оператора присваивания, оно не будет обновляться, даже если вы обновите значение переменной ‘human’.