[英]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
fNval
和lNvalue
具有它们各自循环中的最后一个值。 我认为你的意思是使用用户的名字和姓氏作为字典的键,例如
newFirstName = fNdict[fN]
newLastName = lNdict[lN]
请注意,如果fN
和lN
不在词典中,则会失败。 您可能想要创建defaultdict
。
另请注意,Python有一个大多数Python开发人员遵循的官方样式指南 。 请考虑阅读并相应地编写代码。 您共享的代码非常难以阅读。
您可以遵循稍微不同的实现来实现相同的结果。
这应该只进行一次以创建具有名称的文件。
然后你的名字生成器是一个脚本:
前两点以这种方式实现:
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.