我正在尝试创建“这是您的新名称生成器”程序。我这样做是通过询问用户的名字和姓氏。然后,该程序将使用其名字的首字母和其姓氏的最后字母,并从两个文本文件中提取出新的名字和姓氏。
我已经获得用户的名字和姓氏,并从文件中提取信息,但是它总是为我提供文件的最后一行。
我以为我可以像字典一样设置文件,然后将用户的输入用作键,但这似乎不起作用。
有什么建议吗?
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))
参考图片:
答案 0 :(得分:0)
运行这些行时:
newFirstName = fNval
newLastName = lNvalue
fNval
和lNvalue
具有各自循环中的最后一个值。我认为您的意思是使用用户的名字和姓氏作为字典的键,例如
newFirstName = fNdict[fN]
newLastName = lNdict[lN]
请注意,如果fN
和lN
不在字典中,则此操作将失败。您可能要改为创建defaultdict
s。
还请注意,Python具有大多数Python开发人员都遵循的official style guide。请考虑阅读并相应编写代码。您共享的代码很难阅读。
答案 1 :(得分:0)
您可以遵循略有不同的实现方式来获得相同的结果。
此操作只能创建一次具有名称的文件。
然后您的名称生成器是一个脚本,该脚本:
前两点是通过以下方式实现的:
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 %