@vtaeke

Как правильно скорректировать вывод файла и их значения?

Есть имя, которое внесено в файл, например Quor. При запуске программы, проходит проверка на данное имя, оно его находит, и предлагается ввести другое имя пользователя для внесения в файл. Но когда я ввожу новое имя, в месте вывода оно выводит имя Quor, вместо нового внесенного вбивает тот же Quor, либо первое введенное.
Не могу разобраться.

import json

def get_stored_username():
    """Получает хранимое имя пользователя, если оно существует."""
    filename = 'username.json'
    try:
        with open(filename) as f_obj:
            username = json.load(f_obj)
    except FileNotFoundError:
        return None
    else:
        return username

def get_new_username():
    """Запрашивает новое имя пользователя."""
    username = input("What is your name? ")
    filename = 'username.json'
    with open(filename, 'a') as f_obj:
        json.dump(username, f_obj)
        return username

def great_user():
    """Приветствует пользователя по имени."""
    username = get_stored_username()
    if username:
        print("Welcome back, " + username + "!")
    else:
        username = get_new_username()
        print("We'll remember you when you come back, " + username + "!")

def search_user():
    username = get_new_username()
    if username == "Dort":
        print("Это имя уже есть, введите новое значение: ")
        get_new_username()
        print("We'll remember you when you come back, " + username + "!")
    else:
        great_user()


search_user()
  • Вопрос задан
  • 55 просмотров
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
1. Странно хранить в json формате только одну строку - имя, без ключей, без ничего.
2. Непонятно, зачем дозаписывать файл, если в него просто можно дампнуть старую информацию и добавить новую
3. get_new_username()
Здесь не присвоили username, поэтому
print("We'll remember you when you come back, " + username + "!")
показывает старое имя.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы