几周以来我一直在学习 python 3.6 并且偶然发现了 tutorial 莫尔斯词典示例。
有这样一个字典:
morse = {
"A" : ".-",
"B" : "-...",
"C" : "-.-.",
"D" : "-..",
...
...}
使用我的以下代码,可以输入一个字母并在标准输出中获取匹配的莫尔斯电码:
while 1:
entry = input("letter: ")
if entry in morse:
result = morse[entry]
print(result)
相同的行为:
while 1:
entry = input("letter: ")
for i in entry:
print(morse[entry])
我想要的是输入完整的单词或句子,并在标准输出中为一行中输入的每个字母获取莫尔斯码
letter: ABC
.-,-...,-.-.
我认为以下可能可行(但它不......)。
#result is new dic for the resulting key:values
result = {}
while 1:
entry = input("letter: ")
if entry in morse:
result = morse[entry]
print(result)
else:
for i in entry:
i = entry.split()
print(morse[i])
导致错误,不管我输入的是AB
还是A B
(.split()
默认分隔符是\w ,我认为)
TypeError: unhashable type: 'list'
我也尝试过是否可以继续使用 dict.get() 或 dict.update()。 我认为必须有一个简单的方法来做到这一点,或者? ;) 目标是迭代输入吗?
感谢任何帮助
最佳答案
您不应该需要现有的 split 或 if 语句。检查这是否适合您:
while 1:
entry = input("letters: ")
for i in entry:
if i in morse:
print(morse[i])
如果你想要一个循环的所有字母都在同一行,你可以将它们附加到一个列表或将它们添加到一个空字符串,然后在循环结束时像这样打印:
while 1:
result = ""
entry = input("letters: ")
for i in entry:
if i in morse:
result += morse[i]
print(result)
关于Python 3.6 字典。立即从输入中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47520822/