我是Python的新手(如您所见)。我正在尝试制作消息编码器和解码器。我的编码器将字符转换为5个符号,我需要我的解码器执行相反的操作,但我不知道如何一次从一个字符串中查看多个字符。我确定我的方法非常基础,但是我希望有人可以向我展示如何使用基础知识。这是解码器的片段:
def decoder(message):
decoded_message = ""
for code in message:
if code == "___.|":
decoded_message = decoded_message + "a"
elif code == "__..|":
decoded_message = decoded_message + "b"
elif code == "_...|":
decoded_message = decoded_message + "c"
elif code == "....|":
答案 0 :(得分:0)
您不能“ 一次查看多个字符”,您想要的是创建长度为5的块,具体操作如下:
for code in (message[i:i+5] for i in range(0, len(message), 5)):
pass # do something with code
注意:如果您的message
的长度不是上一次迭代的5的倍数,则code
不会有5个字符。
如果要重复几次,也可以使用
chunks_of = lambda n, xs: xs and [xs[:n],*chunks_of(n,xs[n:])]
然后与chunks_of(5, message)
一起使用。
答案 1 :(得分:-1)
code =“ abcdefg”
array([7, 6, 3, 3, 2, 5, 8, 0, 4, 1])
为您提供从i到j-1的子字符串
例如:
code[i:j]
给您“ bcd”
code[1:4]
答案 2 :(得分:-2)
您可以访问字符串切片,将字符串像python中的数组一样对待。您可以使用range方法为您提供如下索引:
def decoder(message):
decoded_message = ""
for i in range(0,len(message),5):
code = message[i:i+5]
if code == "___.|":
decoded_message = decoded_message + "a"
elif code == "__..|":
decoded_message = decoded_message + "b"
elif code == "_...|":
decoded_message = decoded_message + "c"
elif code == "....|":