Нет причин, по которым он должен меняться - вы присваиваете переменную только за пределами l oop Значение не будет меняться каждый раз, когда вы ссылаетесь на него, только когда вы присваиваете ему значение (т. Е. Когда оно слева от =
).
Перемещение случайного определения в l oop будет заставить его создать новое случайное значение для каждой итерации:
userhealth = 1000
while userhealth > 0:
handsattack = random.randint(5,10)
userhealth -= 30
y = raw_input("Press enter to display the value of handsattack.. ")
print(handsattack)