我希望允许用户能够键入{国家}的{misc},并根据输入显示特定的信息。我已经尝试了几种不同的方法,但似乎从未找到一种方法来使其工作。感谢您的帮助!
(关于标题很抱歉,我真的不知道该给它起什么标题)
def part1():
txt = "{} of {}"
info = input('''What do you want to know?: ''')
if info == "{} of {}":
print(txt.format(misc.get(info), nations.get(info)))
else:
print("i dont know what your talking about")
nations = {
'fiji': {
'location': 'Oceana',
'capital_city': 'Suva'},
'france': {
'location': 'Europe',
'capital_city': 'Paris'},
}
misc = {'population': {'fiji': '847,706',
'france': '60,495,540'},
'location': {'fiji': 'Oceana',
'france': 'Europe'},
}
part1()发布于 2019-08-03 09:01:44
我不确定你到底想做什么,但是你的代码有一些问题,试着这样做:
def part1():
txt = "{} of {}"
info = input('''What do you want to know?: ''')
if ' of ' in info:
params = info.split(' of ')
else:
print("i dont know what your talking about")
return
print(params[0])
print(misc.get(params[0]).get(params[1]))
nations = {
'fiji': {
'location': 'Oceana',
'capital_city': 'Suva'},
'france': {
'location': 'Europe',
'capital_city': 'Paris'},
}
misc = {'population': {'fiji': '847,706',
'france': '60,495,540'},
'location': {'fiji': 'Oceana',
'france': 'Europe'},
}
part1()目前,使用此代码并不能真正知道您的目标是哪个对象(国家或其他)。为了纠正这个问题,我会问用户一个初始问题,以确定他们想要哪种类型的信息。
其他改进可能是检查您从字典中获得的数据。如果你从字典中得不到任何信息(.get返回None),你可以通知用户你有可用的信息)。
发布于 2019-08-03 08:57:59
如果您使用的数据不多,一种快速而棘手的方法是将信息直接放入if语句并调用函数。例如:
def part1():
info = input("What do you want to know?: ")
if info == "location of fiji":
print("Oceana:")
elif info == "capital_city of fiji":
print("Suva")
elif info == "location of France":
print("Europe")
elif info == "capital_city of France":
print("Paris")
else:
print("i dont know what your talking about") part1()
如果你正在使用大量的数据点,那么像你这样拥有一个列表/数据库可能会更好。不过,如果你想要的话,这里有一个快速而又肮脏的解决方案。(此外,如果您使用此方法,您可以使用.lower将用户输入字符串转换为全小写。这样,在输入时大小写无关紧要)。
发布于 2019-08-03 09:36:38
这样做的一个好方法是使用if else/elif语句,这样程序就可以检查多个输入,而不是试图一次检查两个不同的输入。
Viktor Basharkevich在做什么方面有很好的想法
https://stackoverflow.com/questions/57334715
复制相似问题