带ascii的Python递归

带ascii的Python递归,python,recursion,Python,Recursion,我正在尝试创建一个函数,它接收一个字母,并返回字母表中的字母和所有以前的字母。例如,如果参数是“c”,它将返回c,然后是b,然后是a,这是我用ascii尝试的,但我被困在这一点上 def backwards_alphabet(n): if ord(n) == 97: return n else: return n + backwards_alphabet(ord(n-1)) 您可以将递归用于: 输出: ['f', 'e', 'd', 'c', 'b', 'a'] 调

我正在尝试创建一个函数,它接收一个字母,并返回字母表中的字母和所有以前的字母。例如,如果参数是“c”,它将返回c,然后是b,然后是a,这是我用ascii尝试的,但我被困在这一点上

def backwards_alphabet(n):
  if ord(n) == 97:
    return n
  else:
    return n + backwards_alphabet(ord(n-1)) 

您可以将递归用于:

输出:

['f', 'e', 'd', 'c', 'b', 'a']

调用
ord
时需要小心。它需要一个
字符串
您正在向它传递一个
int
。只需将递减的ascii值再次转换为字符串,然后再将其传递给函数:
backwards\u alphabet(chr(ord(n)-1))

完整代码:

def backwards_alphabet(n):
  if ord(n) == 97:
    return n
  else:
    return n + backwards_alphabet(chr(ord(n)-1))

res = backwards_alphabet('c')

print(res)

输出
cba
谢谢您的帮助,我的问题是关于
ord
我解决了我的问题,我希望这样做:

def backwards_alphabet(letter):
  if ord(letter) == 97:
    return letter
  else:
    print(letter)
    return backwards_alphabet(chr(ord(letter)-1))

print(backwards_alphabet('c'))

您正在
ord
-ing递归调用的输入;函数看起来需要一个字符,但传递
ord
结果意味着递归传递
int
。在任何情况下,您都需要提供s,而不仅仅是“我被卡住了”。可能否决票来自无法理解所有这些内容的人……您提出的解决方案没有做到您所说的“返回字母表中的字母和所有以前的字母”。它只返回一个字母,
“a”
,并打印其余字母作为副作用。如果需要返回向后字母表的正确递归函数,请参见@Anonta的答案(+1)
def backwards_alphabet(letter):
  if ord(letter) == 97:
    return letter
  else:
    print(letter)
    return backwards_alphabet(chr(ord(letter)-1))

print(backwards_alphabet('c'))