簡體   English   中英

從文本字典訪問值

[英]Accessing Values from Text Dictionary

我正在嘗試創建一個“這是你的新名稱生成器”程序。 我這樣做是通過詢問用戶的名字和姓氏。 程序然后獲取他們的名字的第一個字母,以及他們姓氏的最后一個字母,並從兩個文本文件中提取新的名字和姓氏。

我已經獲得了用戶的名字和姓名,並從文件中提取信息,但它總是給我文件的最后一行。

我以為我可以像字典一樣設置文件,然后使用用戶的輸入作為鍵,但它似乎不起作用。

有什么建議?

firstName = input("What is your first Name? ")
lastName = input("What is your last Name? ")

fN = firstName[0].lower()
lN_len = len(lastName) -1
lN = lastName[lN_len]

fNdict = {} 
with open('firstName.txt') as f:
    for line in f:
        (fN, fNval) = line.split(",")
        fNdict[fN] = fNval

lNdict = {}
with open('lastName.txt') as fileobj:
    for line in fileobj:
        lNkey, lNvalue = line.split(",")
        lNdict[lN] = lNvalue
newFirstName = fNval
newLastName = lNvalue

print("Your zombie Name is: %s %s "%(newFirstName,newLastName))

參考圖片:

當您運行這些行時:

newFirstName = fNval
newLastName = lNvalue

fNvallNvalue具有它們各自循環中的最后一個值。 我認為你的意思是使用用戶的名字和姓氏作為字典的鍵,例如

newFirstName = fNdict[fN]
newLastName = lNdict[lN]

請注意,如果fNlN不在詞典中,則會失敗。 您可能想要創建defaultdict

另請注意,Python有一個大多數Python開發人員遵循的官方樣式指南 請考慮閱讀並相應地編寫代碼。 您共享的代碼非常難以閱讀。

您可以遵循稍微不同的實現來實現相同的結果。

  1. 創建兩個包含所有關聯字母的python詞典 - 名字和字母 - 姓氏。
  2. 使用json將它們寫在文件中。 此文件將替換您的firstName.txt和lastName.txt

這應該只進行一次以創建具有名稱的文件。

然后你的名字生成器是一個腳本:

  1. 加載這兩個詞典。
  2. 詢問用戶輸入以獲取密鑰。
  3. 使用用戶輸入從字典中檢索名稱。

前兩點以這種方式實現:

import json

#these are just brief examples, provide complete dictionaries.
firstnames = {"A": "Crafty", "B": "Brainy"}
lastnames = {"A": "Decapitator", "B": "McBrains"}

with open("fullnames.txt", "w") as ff:
    json.dump(firstnames, ff)
    ff.write('\n')
    json.dump(lastnames, ff)

這將是一個生成帶有名稱的文件的腳本。

名稱生成器將是:

import json

with open("fullnames.txt", "r") as ff:
    ll = ff.readlines()
    firstnames = json.loads(ll[0].strip())
    lastnames = json.loads(ll[1].strip())

inputfirst = input("What is your first Name? ")
inputlast = input("What is your last Name? ")

fn = inputfirst[0].upper()
ln = inputlast[-1].upper() #negative indexes start from the last element of the iterable, so -1 would be the last.

print("Your zombie Name is: {} {} ".format(firstnames[fn], lastnames[ln])) #using string format method, better that the old %

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM