Python Recursion with ascii



我正在尝试创建一个函数,该函数接受一个字母并返回字母表中的字母和所有以前的字母,例如,如果参数为"c",它将返回c然后返回b然后a,这就是我尝试过的ascii,但我被困在这个

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

调用ord时需要小心。它期望一个string你传递它一个int.只需将递减的 ascii 值再次转换为字符串,然后再将其传递给函数:backwards_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

您可以将递归与生成器一起使用:

def backwards_alphabet(n):
   if ord(n) == 97:
      yield "a"
   else:
      yield n
      for i in backwards_alphabet(chr(ord(n)-1)):
          for b in i:
              yield i
print(list(backwards_alphabet("f")))

输出:

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

感谢您的帮助,我的问题在于我解决问题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'))

最新更新