我正在尝试使用此函数来获取创建dict对象的用户输入,该对象可用于生成.json文件,并且该函数可以正常工作,直到您键入完成为止,它确实意识到您键入了done和 它确实会显示您正在创建的变量,但要在返回时始终输出“ None”。我正在使用最新版本的python。我和我的老师不知道为什么它不起作用。
def menu_asset_create_lang(lang):
# The functions "header, space, and br"
# are all just for making the text look nice in
# the command line all they do is print stuff for
# formatting and clear just does os.system('cls')
clear()
header()
print('Lang Creation: ')
space()
print(lang)
br()
print('< Done')
inp1 = labeled_input('Input Lang Code')
if(inp1 == 'done') or (inp1 == '<'):
return lang
inp2 = labeled_input('Input Translation')
lang.append(inp1 + '\":\"' + inp2)
menu_asset_create_lang(lang)
# instantiate the variable
lang = []
# feed it into the function and make it
# spit out the generated variable in console
print(menu_asset_create_lang(lang))
我也尝试过这样做:
lang = []
langout = menu_asset_create_lang(lang)
print(langout)
还请您了解我对python还是很陌生。
答案 0 :(得分:0)
递归调用menu_asset_create_lang(lang)
只是挂在这里:在Python执行之后,并且此调用返回任何内容之后,函数主体结束,因此将返回None
隐式地。
当前,您的代码与:
def menu_asset_create_lang(lang):
...
menu_asset_create_lang(lang)
return None
您能看到应该返回的内容而不是None
吗?
答案 1 :(得分:0)
def menu_asset_create_lang(lang):
# The functions "header, space, and br"
# are all just for making the text look nice in
# the command line all they do is print stuff for
# formatting and clear just does os.system('cls')
clear()
header()
print('Lang Creation: ')
space()
print(lang)
br()
print('< Done')
inp1 = labeled_input('Input Lang Code')
if(inp1 == 'done') or (inp1 == '<'):
return lang
inp2 = labeled_input('Input Translation')
lang.append(inp1 + '\":\"' + inp2)
return menu_asset_create_lang(lang)
我希望您能获得递归收益
Python默认返回None