def emoji_convert(massage):
split_words = massage.split(" ")
emoji = {
":)": " 😁",
":(": " 😞",
":": " 😶",
":|": " 😐"
}
output = ""
for words in split_words:
output += emoji.get(words)
return output
massage=(input("> "))
print(emoji_convert(massage))
get this type error
output += emoji.get(words)
TypeError: can only concatenate str (not "NoneType") to str
最快的修复方法是在emoji
与None
没有匹配时将默认值更改为空字符串:
output += emoji.get(words, '')
…或者,当没有找到该单词时,不加修改地传递该单词(除了前导空格):
output += emoji.get(words, ' ' + words)
您还可以考虑将输出生成为列表,并在返回之前将该列表转换为字符串,从而更正确地镜像您之前所做的split()
。
def emoji_convert(message):
split_words = message.split(" ")
emoji = {
":)": "😁",
":(": "😞",
":": "😶",
":|": "😐",
}
output = []
for word in split_words:
output.append(emoji.get(word), word)
return ' '.join(output)
message = input("> ")
print(emoji_convert(message))
您正在使用dict.get
方法与不在字典中的元素。
从python文档:
get
(key[, default])
如果key在字典中,则返回key的值,否则default。如果default未指定,则默认为None
,因此此方法永远不会引发KeyError
。
如果您使用emoji[word]
,这将引发KeyError
。相反,emoji.get(word)
返回默认,即None
。
因此,要么提供一个可以添加到现有字符串的默认字符串,要么以其他方式处理无效输入。