我有Python的代码:
def additems():
items = {}
add = input("What would you like to add?")
value = input("What value would you like to assign?")
items[add] = value
return items
def resume():
decision = input("would you like to continue?")
if decision == "Y":
main()
else:
print("Exiting...")
def main():
items = additems()
print(items)
resume()
main()
目标是能够根据需要多次编辑“项目”,同时始终将更新的词典返回主页。但是,就目前而言,我只能在“additems”函数内编辑一次字典,然后在运行“main”时重置。我不想在main运行时重置字典,我总是希望它打印更新的“items”字典。所以而不是:
“你想补充什么?” - G “你想分配什么价值?” - 3 “{'G':'3'}” “你想继续吗?” - Y. “你想补充什么?” - J. “你想分配什么价值?” - 4 “{'J':'4'}”(仅打印字典的最新添加内容)
...代码目前的功能是什么,我希望它能够做到:
“你想补充什么?” - G “你想分配什么价值?” - 3 “{'G':'3'}” “你想继续吗?” - Y. “你想补充什么?” - J. “你想分配什么价值?” - 4 “{'G':'3','J':'4'}”(两个添加内容均已打印)
......只要我提供Y的输入就可以做到这一点,这意味着我可以继续。
如果您还没有猜到,我是Stack和Python的新手,但是我们将不胜感激。因此,当我指的是帮助时,我的意思是帮助那些不熟悉Python和编程的人,而不是那些有经验的人。回答就像你和一个5岁的孩子说话一样,为我们省去了所有麻烦。
答案 0 :(得分:1)
由于@AChampion指出您不需要递归,只需将items
从main
函数传递到additems
。
由于dict
个对象是可变的,我们不需要传递和返回它们,只是在需要时进行变异。
我们可以用无限循环替换递归,如
def additems(items):
add = input("What would you like to add?\n")
value = input("What value would you like to assign?\n")
items[add] = value
def main():
items = {}
while True:
additems(items)
print(items)
decision = input("would you like to continue?\n")
if decision != "Y":
print("Exiting...")
return
main()
我在每个问题的末尾添加了换行符'\n'
,以便用户更轻松地进行互动,如果您不需要它们,请随时删除。