gpt4 book ai didi

python - 使用字典并在匹配键时打印出值,反之亦然

转载 作者:太空宇宙 更新时间:2023-11-03 15:45:27 25 4
gpt4 key购买 nike

我有一本字典,其中 key 是字母表中的一个字母,它的 value 是它对应的摩尔斯电码字母(例如 ”A”: “。 -“).我还有一个用户输入,我将用户输入那里的消息。一旦他们按下回车键,它就会检查每个输入的字母,看看它是摩尔斯电码还是英文字母,方法是查看它是否在值或键中。之后,我希望它打印相应的字母(例如,如果它发现“.-”,将打印“A”)。我该怎么做?

到目前为止,这是我的代码:

translation = {
"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": "--..",
" ": " "
}

user_input = input("Input english or morse code message:\n").upper()

for i in user_input:
if i in translation.keys():
print(translation.values())
if i in translation.values():
print(translation.keys())

最佳答案

要将文本翻译成莫尔斯码,只需将字符串的字符映射translation字典中的相应值:

>>> msg = "HELLO WORLD"
>>> morse = ' '.join(map(translation.get, msg))
>>> morse
'.... . .-.. .-.. --- .-- --- .-. .-.. -..'

请注意,我用空格分隔了代码,否则几乎不可能将消息解码回来,因为某些序列可能会产生不同的字符组合。要翻译回来,你首先要反字典;然后按空格拆分莫尔斯电文,并从逆字典中获取值。

>>> trans_back = {v: k for k, v in translation.items()}
>>> ''.join(map(trans_back.get, morse.split()))
'HELLOWORLD'

请注意,这删除了空格。要解决此问题,您可以使用与空格不同的符号来分隔莫尔斯电码序列。或者使用这个稍微复杂一点的版本,使用 re.split 在一个空格处拆分,前提是该空格后面没有,或者前面没有另一个空格:

>>> ''.join(map(trans_back.get, re.split("(?<! ) | (?! )", morse)))
'HELLO WORLD'

为了决定采用哪种翻译方式,即原始文本是摩尔斯还是纯文本,您可以只检查字符串的第一个或所有字符是否在翻译中字典,或者它们是否是有效的莫尔斯符号:

if all(c in translation for c in msg):
# translate to morse
elif all(c in ".- " for c in msg):
# translate back
else:
# don't know what to do

注意:此答案是在向字典中的所有条目添加尾随空格之前发布的。

关于python - 使用字典并在匹配键时打印出值,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50193618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com