调用递归函数backwards_alphabet()后输出出现None的解决方法
解决递归函数调用后输出末尾带None的问题
你当前遇到的情况是:调用递归函数backwards_alphabet()并传入starting_letter后,输出结果末尾多了个None,且无法修改starting_letter = input()以上的代码,需要得到无None的倒序字母序列。
当前代码如下:
def backwards_alphabet(curr_letter): if curr_letter == 'a': print(curr_letter) else: print(curr_letter) prev_letter = chr(ord(curr_letter) - 1) backwards_alphabet(prev_letter) starting_letter = input() print(backwards_alphabet(starting_letter))
- 当前输出(输入
f时):f e d c b a None - 预期输出:
f e d c b a
问题原因
backwards_alphabet()函数内部已经通过print()语句输出了所有字母,但函数本身没有定义返回值,Python中无返回值的函数默认会返回None。你在外层用print()包裹函数调用,相当于把函数的返回值None也打印了出来,所以末尾会多一个None。
解决方法
直接调用函数,去掉外层的print()即可:
修改后的代码:
def backwards_alphabet(curr_letter): if curr_letter == 'a': print(curr_letter) else: print(curr_letter) prev_letter = chr(ord(curr_letter) - 1) backwards_alphabet(prev_letter) starting_letter = input() backwards_alphabet(starting_letter)
运行修改后的代码,就能得到预期的无None的倒序字母序列。
内容的提问来源于stack exchange,提问作者Please Help
相关产品推荐
相关产品推荐

