gpt4 book ai didi

python - 如何在 Python 中创建字母表上的循环迭代器?

转载 作者:行者123 更新时间:2023-12-01 02:23:01 25 4
gpt4 key购买 nike

假设以下场景:

import string

UPPERCASE_ALPHABET = list(string.ascii_uppercase)
LOWERCASE_ALPHABET = list(string.ascii_lowercase)

如何在字母表上创建一个跳跃 N 个位置的循环?

<小时/>

示例 1:

字母 = a,跳转 = 5

结果:f

<小时/>

示例 2:

字母 = z,跳跃 = 5

结果:e

<小时/>

到目前为止,我得到了:

import string

UPPERCASE_ALPHABET = list(string.ascii_uppercase)
LOWERCASE_ALPHABET = list(string.ascii_lowercase)

def forward(letter, jump):
alphabet = LOWERCASE_ALPHABET if letter.islower() else UPPERCASE_ALPHABET
index = alphabet.index(letter)
count = 0
while True:
if count == jump:
return alphabet[index]

if index == len(alphabet):
index = 0

index += 1
count += 1

print forward('a', 5)
print forward('z', 5)

但它看起来一点也不 Pythonic...

有没有更好的 Python 方式来做到这一点?也许使用 chr(ord('N') +position) ?

最佳答案

我认为您对 ordchr 的想法是正确的:

import string

def forward(letter, jump):
if letter.islower():
start_character = ord('a')
else:
start_character = ord('A')
start = ord(letter) - start_character
offset = ((start + jump) % 26) + start_character
result = chr(offset)
return result

print forward('a', 5)
print forward('z', 5)
print forward('z', 1)
print forward('a', 26)
print forward('A', 5)
print forward('Z', 5)
print forward('Z', 1)
print forward('A', 26)

输出

f
e
a
a
F
E
A
A

关于python - 如何在 Python 中创建字母表上的循环迭代器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47759611/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com