Как я могу это исправить: ValueError неверный литерал для int () с основанием 10: ''? Python - PullRequest
0 голосов
/ 27 апреля 2020
import os
txt_file = 'highscore.txt'
score = total_points

if not os.path.exists(txt_file):
    with open(txt_file, 'w') as f:
        f.write('Score: {score}\n'
                + 'Name: {name}')

with open(txt_file, 'r') as f:
    previous_score = int(f.readline().split()[-1])

# compare the previous score with current score and write the highest score
if previous_score < score:
    with open(txt_file, 'w') as f:
        f.write(f'Score: {score}\n'
                + f'Name: {name}')

Я понимаю, что, поскольку у меня на линии Score:, это не просто результат. Если я использую re.findall, я могу получить только счет, но он превращается в список, и я все еще не могу использовать int(previous_score) < int(score). Как мне go сделать это? вся ваша помощь. Большое вам спасибо!

Ответы [ 3 ]

2 голосов
/ 27 апреля 2020

что не так с previous_score = int(f.readline().split()[-1])

1 голос
/ 27 апреля 2020

В своем коде вы буквально пишете «Оценка: {оценка}» в txt_file. Вы не заменяете {score} значением переменной score. Вы можете открыть этот файл в редакторе и подтвердить. Чтобы выполнить эту замену, добавьте f перед каждой строкой, то есть: ваш код должен начинаться

with open(txt_file, 'w') as f:
    f.write(f'Score: {score}\n'
        + f'Name: {name}')

Затем, чтобы извлечь оценку из previous_score, осторожно, это целая строка, вы следует разбить строку на слова и оставить последний элемент, а затем преобразовать его в целое число: int(previous_score.split()[-1]).

0 голосов
/ 27 апреля 2020

Звучит так, будто вы хотите извлечь int из строки. Например,

previous_score = 'Score: 150\n'             #Which you read from the file with .readline()
score          = previous_score.split()[-1] #Splits a string into words. Take last item. 
print(int(score))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...