我正在尝试创建一个函数,该函数接受一个字母并返回字母表中的字母和所有以前的字母,例如,如果参数为"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'))