Hir*_*ora 0 python string indexing loops python-3.x
['baNaNa', 7]
#字符串和步长 'utGtGt'
# 字符串的每个字符按步长向后移动 import ast
in_string = input()
lis = ast.literal_eval(in_string)
st = lis[0]
step = lis[1]
alphabets = 'abcdefghijklmnopqrstuvwxyz'
password = ''
for letter in st:
if letter in alphabets:
index_val = alphabets.index(letter) - (step)
password += alphabets[index_val]
print(password)
Run Code Online (Sandbox Code Playgroud)
我得到的输出是“utgtgt”。我想要'utGtGt'。对此的帮助将不胜感激。
string 模块具有创建转换字典的方法和翻译方法来执行您想要的操作:
st = "baNaNa"
step = 7
alphabets = 'abcdefghijklmnopqrstuvwxyz'
alph2 = alphabets.upper()
# lower case translation table
t = str.maketrans(alphabets, alphabets[-step:]+alphabets[:-step])
# upper case translation table
t2 = str.maketrans(alph2, alph2[-step:]+alph2[:-step])
# merge both translation tables
t.update(t2)
print(st.translate(t))
Run Code Online (Sandbox Code Playgroud)
输出:
utGtGt
Run Code Online (Sandbox Code Playgroud)
你给它原始字符串和一个等长的字符串来映射字母并使用str.translate(dictionary)
.
切片后的字符串相当于:
print(alphabets)
print(alphabets[-step:]+alphabets[:-step])
abcdefghijklmnopqrstuvwxyz
tuvwxyzabcdefghijklmnopqrs
Run Code Online (Sandbox Code Playgroud)
这就是你的step
目的。
如果您从未见过使用字符串切片,请参阅了解切片表示法。
归档时间: |
|
查看次数: |
396 次 |
最近记录: |