Как прочитать значение строки, хранящейся в текстовом файле, затем преобразовать в целое число и выполнить математические вычисления для значения? - PullRequest
0 голосов
/ 09 сентября 2018

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

Ранее в программе мой код сохранял значение в текстовый файл, всего одно значение, затем позже он открывает тот же текстовый файл, перезаписывает значение новым значением на основе очень простого вычисления. Это первое значение плюс 5. Я потратил кучу времени, читая этот сайт и просматривая свои книги, и на данный момент я почти уверен, что упускаю что-то очевидное.

Первый фрагмент кода, который создает документ и устанавливает значение:

def set_hp(self):
    f = open('player_hp.txt', 'w')
    self.hitpoints = str(int(self.hitpoints))
    f.write(self.hitpoints)
    f.close()

Это раздел проблем ... Я прокомментировал строку с проблемой.

def camp_fire():
    print
    print "You stop to build a fire and rest..."
    print "Resting will restore your health."
    print "You gather wood from the ground around you. You spark\n\
your flint against some tinder. A flame appears.\n\
You sit, and close your eyes in weariness. A peaceful calm takes you\n\
into sleep."
    f = open('player_hp.txt', 'r')
    orig_hp = f.readlines()
    orig_hp = str(orig_hp)
    f = open('player_hp.txt', 'w')
    new_value = orig_hp + 5    ##this is where my code breaks
    new_value = str(int(new_value))
    f.write(new_value)
    f.close()
    print "You have gained 5 hitpoints from resting. Your new HP are {}.".format(new_value)

Это ошибка, которую я получаю:

  File "C:\Python27\Awaken03.py", line 300, in camp_fire
    new_value = orig_hp + 5
TypeError: cannot concatenate 'str' and 'int' objects

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

Ответы [ 2 ]

0 голосов
/ 09 сентября 2018

f.readlines () возвращает список строк, в вашем случае что-то вроде ['10']. Таким образом, str(orig_hp) - это текстовое представление этого списка, например '[\'10\']', которое вы не сможете интерпретировать как целое число.

Вы можете просто использовать f.read(), чтобы прочитать весь файл сразу в строку, которая будет выглядеть как '10', и преобразовать ее в целое число:

orig_hp = int(f.read())
0 голосов
/ 09 сентября 2018

Сообщение об ошибке ясно, вы пытаетесь объединить строку с целым числом. Вы должны изменить строку с:

new_value = orig_hp + 5

Кому:

new_value = str(int(orig_hp) + 5)

Затем вы можете использовать указанное выше значение для записи непосредственно в файл в виде строки:

##new_value = str(int(new_value))## Skip this line
f.write(new_value)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...