Как я могу распечатать разницу в процентах - PullRequest
0 голосов
/ 20 октября 2019

Я занимаюсь текстовыми играми для школы, и нам нужно выполнить четыре разные функции. Я сделал систему очков здоровья, и теперь я хотел бы напечатать, сколько процентов игрок использовал от общей суммы amounta.

Это моя система hp:

def hela(player_health, hit):
    return player_health - hit

player_health_points = 15
dog_hit_value = 4
pistol_hit_value = 15
brasnuckles_hit_value = 3
punch_hit_value = 1
kick_hit_value = 2
player_health_points = hela(player_health_points, dog_hit_value,)
player_health_points = hela(player_health_points, brasnuckles_hit_value)
print('You have ' + str(player_health_points) + ' HP left!')*

И этоэто то, что я сделал сейчас и потерял свои мозги отдыха с этим:

def hp_left_percentage(x,y):
    vastaus = x - y
    return vastaus

health = 16
tulos = hp_left_percentage(health,player_health_points)
print(tulos)

Вопросы:

  • Почему я должендобавить один для def здоровья hp_left_percentage, чтобы оно показывало правильное значение?

  • Теперь def hp_left_percentage показывает мне, сколько у игрока здоровья, с числовым значением. Как я могу получить функцию напечатать его в процентах?

Я надеюсь, вы понимаете, что я имею в виду:)

Ответы [ 3 ]

0 голосов
/ 20 октября 2019

Вы имеете в виду что-то подобное?

def hp_left_percentage(x,y):
    vastaus = x - y
    percentage = '{0:.2f}'.format((vastaus / x * 100))
    return vastaus
0 голосов
/ 27 октября 2019

Я был в отпуске, поэтому не писал сюда. Спасибо за все ответы.

Это то, что я сделал.

def hela(player_health, hit):
    return player_health - hit

def hp_left_percentage(x, y):
    vastaus = 1 - (x - y) / initial_hp
    return vastaus

player_health_points = 15

dog_hit_value = 4

player_health = 15
initial_hp = 15

player_health_points = hela(player_health_points, dog_hit_value,)

perc_left = hp_left_percentage(player_health, player_health_points)

print(f'You have {perc_left:.2%} HP left!')
0 голосов
/ 20 октября 2019

Если я правильно понимаю ваш вопрос, вы хотите отобразить процент оставшегося здоровья, а не только абсолютное число? Прямо сейчас ваш health_left_percentage просто показывает разницу в HP. Чтобы рассчитать процент, вы можете изменить его следующим образом:

def hp_left_percentage(x,y):
    # I assume, 'y' is the damage here.

    vastaus = (x - y) / x
    print(f'You have {vastaus:.0%} HP left!')

Таким образом, функция автоматически рассчитает процент и вернет его в правильном формате. Я предлагаю прочитать f-строки для ясного способа отображения строк с переменными так, как вы хотите.

Надеюсь, это поможет. Дайте мне знать, если я вас неправильно понял.

РЕДАКТИРОВАТЬ Если игрок получает удар два или более раз, то вы должны сохранить начальные HP в глобальной переменной и изменить функцию следующим образом:

initial_hp = 100


def hp_left_percentage(x, y):
    vastaus = (x - y) / initial_hp
    return vastaus


perc_left = hp_left_percentage(x, y)
print(f'You have {perc_left:.0%} HP left!')
...