在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/Java  Python/ python3 json存取輸入數(shù)據(jù)

python3 json存取輸入數(shù)據(jù)

《python學(xué)習(xí):從入門(mén)到實(shí)踐》我仿照書(shū)上的一個(gè)例子寫(xiě)的。查找用戶(hù)名,查到就顯示,查不到就寫(xiě)入文件?,F(xiàn)在用json來(lái)存儲(chǔ),只存儲(chǔ)一個(gè)名字能正常運(yùn)行。我認(rèn)為是json沒(méi)有正確解析,網(wǎng)上找了下也沒(méi)找到答案。希望大家告訴我,如何修改代碼。

import  json
def save_name():
    print("查無(wú)此人,請(qǐng)登記。")
    name = input("\n 請(qǐng)輸入你的名字:")
    with open('name.json','a') as file:
        json.dump(name,file)
    print("你的名字已經(jīng)登記"+str(name))
    return name

def find_name(fn):
    try:
        file = open('name.json','r')
    except FileNotFoundError:
       return save_name()
    else:
        name = json.load(file)
        for i in name:
            if fn == i:
                return fn
            else:
              return save_name()
def hello_name():
    name = input("\n 請(qǐng)輸入你的名字:")
    print("歡迎你"+str(find_name(name)))
    
hello_name()
回答
編輯回答
你好胸

先去學(xué)學(xué)json的格式吧,不能用'a'模式一個(gè)一個(gè)寫(xiě)open('name.json','a'),你追加的方式等于每一行是一個(gè)json,在一起不符合json格式當(dāng)然解析報(bào)錯(cuò)了

import  json
def save_name(name):
    #print("查無(wú)此人,請(qǐng)登記。")
    #name = input("\n 請(qǐng)輸入你的名字:") 不要再輸入了,萬(wàn)一他又輸了一個(gè)已存在的名字,重復(fù)了啊
    with open('name.json','w') as file:
        json.dump(name,file)
    print("你的名字已經(jīng)登記"+str(name[-1]))
    return name[-1]

def find_name(fn):
    try:
        file = open('name.json','r')
    except FileNotFoundError:
       return save_name([fn])
    else:
        name = json.load(file)
        file.close()
        """for i in name:
            if fn == i:
                return fn
            else:  一次不對(duì)就存名字,后面對(duì)了你不就錯(cuò)了
              return save_name()"""
        if fn in name:
            return fn
        else:
            name.append(fn)
            return save_name(name)

def hello_name():
    name = input("\n 請(qǐng)輸入你的名字:")
    print("歡迎你"+str(find_name(name)))
    
hello_name()
2017年9月27日 16:56