我正在尝试创建一个功能
rotate_character(char, rot)
收到一个角色," char" (一个长度为1的字符串)和一个整数" rot"。该函数应该返回一个长度为1的新字符串,这是将char旋转到右边的rot数量的结果。
所以输入" A"对于char和" 13"腐烂会返回
N
(A的初始值为0,B的初始值为1,等等)。轮换期间应保持资本化。
我已经创建了一个函数,它使用字典返回字母表中字母的位置:
letter = input("Enter a letter: ")
def alphabet_position(letter):
alphabet_pos = {'A':0, 'a':0, 'B':1, 'b':1, 'C':2, 'c':2, 'D':3,
'd':3, 'E':4, 'e':4, 'F':5, 'f':5, 'G':6, 'g':6,
'H':7, 'h':7, 'I':8, 'i':8, 'J':9, 'j':9, 'K':10,
'k':10, 'L':11, 'l':11, 'M':12, 'm':12, 'N': 13,
'n':13, 'O':14, 'o':14, 'P':15, 'p':15, 'Q':16,
'q':16, 'R':17, 'r':17, 'S':18, 's':18, 'T':19,
't':19, 'U':20, 'u':20, 'V':21, 'v':21, 'W':22,
'w':22, 'X':23, 'x':23, 'Y':24, 'y':24, 'Z':25, 'z':25 }
pos = alphabet_pos[letter]
return pos
我认为我可以使用此函数在旋转前获取(char)的初始值。
def rotate_character(char, rot)
initial_char = alphabet_position(char)
final_char = initial_char + rot
但我的问题是,如果initial_char + rot大于25,我需要回到字母表的开头并继续计数。所以输入" w" (初始值为22)+输入为8的腐烂应返回
e
我怎么用python说这个?
if final_char > 25, start at the beginning of the list and continue counting
我是否一定需要使用我在alphabet_position函数中创建的字典? It was also suggested我通过使用Python的内置字母列表找到了字符编号,如下所示:
import string
letter = input('enter a letter: ')
def alphabet_position(letter):
letter = letter.lower()
return list(string.ascii_lowercase).index(letter)
return(alphabet_position(letter))
我不确定当你需要在你计算时换行时,哪一个是更好的选择。感谢您的帮助/建议!
修改:
现在我的代码看起来像这样:
letter = input("enter a letter")
rotate = input("enter a number")
def rotate(letter, rotate):
letter = letter.lower()
return chr((ord(letter) + rotate - 97) % 26 + 97)
print(rotate(letter))
编辑2 :
def rotate(letter, number):
letter = letter.lower()
shift = 97 if letter.islower() else 65
return chr((ord(letter) + number - shift) % 26 + shift)
letter = input('Enter a letter: ')
number = int(eval(input('Enter a number: ')
print(rotate(letter, number))
给了我一个ParseError:" ParseError:第8行和第34行的错误输入; (打印线)
答案 0 :(得分:3)
def rotate(letter, rot):
shift = 97 if letter.islower() else 65
return chr((ord(letter) + rot - shift) % 26 + shift)
letter = input('Enter a letter: ')
rot = int(input('Enter a number: '))
print(rotate(letter, rot))
答案 1 :(得分:2)
您可以使用string
模块,然后使用模运算符来"环绕"字母结束:
from string import lowercase
def rotate_char(char, rot):
i = lowercase.index(char)
return lowercase[(i + rot) % 25]