|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#摩斯密码破译
#明文
M_LIST = ['A','B','C','D','E','F','G','H',
'I','J','K','L','M','N','O','P',
'Q','R','S','T','U','V','W','X','Y','Z']
#密文
A_LIST = ['.-','-...','-.-.','-..','.','..-.','--.','....',
'..','.---','-.-','.-..','--','-.','---','.--.',
'--.-','.-.','...','-','..-','...-','.--','-..-','-.--','--..']
target = input('请输入目标摩斯密码:')
split_target = target.split(' ')
result = []
for each in split_target:
_ = A_LIST.index(each)
recult.append(M_LIST[_])
print(result )
我给了一段莫斯密码后:
Traceback (most recent call last):
File "D:/py/摩斯密码破译器.py", line 17, in <module>
_ = A_LIST.index(each)
ValueError: '' is not in list
这种错误是啥呀???
这个错误是由于程序尝试在列表 A_LIST 中查找空字符串 '' 导致的。根据您提供的代码,这可能是由于输入的目标摩斯密码中存在空格导致的。
在您的代码中,您使用 split_target = target.split(' ') 将目标摩斯密码按空格进行拆分,然后对每个元素执行解码操作。然而,如果目标摩斯密码中有连续的空格, split() 方法将生成空字符串作为元素。
要解决这个问题,您可以在拆分字符串之前对目标摩斯密码进行预处理,删除多余的空格。比如使用 target.strip() 方法去除字符串两端的多余空格,然后再进行拆分。
下面是修改后的代码示例: M_LIST = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
A_LIST = ['.-','-...','-.-.','-..','.','..-.','--.','....','..','.---','-.-','.-..','--','-.','---','.--.','--.-','.-.','...','-','..-','...-','.--','-..-','-.--','--..']
target = input('请输入目标摩斯密码:')
processed_target = target.strip() # 去除字符串两端的空格
split_target = processed_target.split(' ')
result = []
for each in split_target:
if each in A_LIST: # 判断元素是否在列表中
index = A_LIST.index(each)
result.append(M_LIST[index])
else:
result.append('?') # 如果元素不在列表中,可以使用特殊字符表示未知解码结果
print(result)
我希望这可以帮到您!如果还有其他问题,请随时提问。
如果问题已经解决,请设置最佳答案
|
|