算一个清单
Count up a list
基本上我需要接受一个输入,将其转换成相应的数字,然后在列表中计算 "offset" 和 return 中输入的任何新的相应数字。
例如 "de" 我会将其翻译成 "4" 、 "5" 然后我需要数到 "7" 、 "8" 并让程序 return "gh"。
努力弄清楚如何真正提升列表。
import string
translate = {
'a': "1", 'b': "2", 'c': "3", 'd': "4", 'e': "5", 'f': "6",
'g': "7", 'h': "8", 'i': "9", 'j': "10", 'k': "11", 'l': "12",
'm': "13", 'n': "14", 'o': "15", 'p': "16", 'q': "17", 'r': "18",
's': "19", 't': "20", 'u': "21", 'v': "22", 'w': "23", 'x': "24",
'y': "25", 'z': "26",
}
msg = input("Enter Message: ")
offset = input("Enter Offset: ")
caesar = [translate[ch.lower()] for ch in msg if ch in string.ascii_letters]
您已经在导入 string
,因此您可以索引到 string.ascii_letters
而不是手动定义字典和计算偏移量。不要忘记使用模数从 z
环绕到 A
.
import string
msg = 'de'
offset = 3
caesar = ''.join(string.ascii_letters[(string.ascii_letters.index(ch) + offset) % len(string.ascii_letters)]
for ch in msg)
print(caesar)
# gh
这可以扩展为稍微更具可读性:
msg = 'de'
offset = 3
caesar = []
for ch in msg:
ch_index = string.ascii_letters.index(ch)
new_index_with_offset = (ch_index + offset) % len(string.ascii_letters)
new_ch = string.ascii_letters[new_index_with_offset]
caesar.append(new_ch)
caesar = ''.join(caesar)
print(caesar)
# gh
我将从 z
到 a
(而不是 A
)作为 reader.
的练习
基本上我需要接受一个输入,将其转换成相应的数字,然后在列表中计算 "offset" 和 return 中输入的任何新的相应数字。
例如 "de" 我会将其翻译成 "4" 、 "5" 然后我需要数到 "7" 、 "8" 并让程序 return "gh"。
努力弄清楚如何真正提升列表。
import string
translate = {
'a': "1", 'b': "2", 'c': "3", 'd': "4", 'e': "5", 'f': "6",
'g': "7", 'h': "8", 'i': "9", 'j': "10", 'k': "11", 'l': "12",
'm': "13", 'n': "14", 'o': "15", 'p': "16", 'q': "17", 'r': "18",
's': "19", 't': "20", 'u': "21", 'v': "22", 'w': "23", 'x': "24",
'y': "25", 'z': "26",
}
msg = input("Enter Message: ")
offset = input("Enter Offset: ")
caesar = [translate[ch.lower()] for ch in msg if ch in string.ascii_letters]
您已经在导入 string
,因此您可以索引到 string.ascii_letters
而不是手动定义字典和计算偏移量。不要忘记使用模数从 z
环绕到 A
.
import string
msg = 'de'
offset = 3
caesar = ''.join(string.ascii_letters[(string.ascii_letters.index(ch) + offset) % len(string.ascii_letters)]
for ch in msg)
print(caesar)
# gh
这可以扩展为稍微更具可读性:
msg = 'de'
offset = 3
caesar = []
for ch in msg:
ch_index = string.ascii_letters.index(ch)
new_index_with_offset = (ch_index + offset) % len(string.ascii_letters)
new_ch = string.ascii_letters[new_index_with_offset]
caesar.append(new_ch)
caesar = ''.join(caesar)
print(caesar)
# gh
我将从 z
到 a
(而不是 A
)作为 reader.