字典输出为一行
我正在通过 http://GrokLearning.com 学习 Python 3.3,还是个初学者。
我的目标是写一个 Word2SMS 程序。这个程序会告诉用户在普通手机(非智能手机)上应该按哪个“数字键”来拼出一个给定的单词。输入的单词会全部是大写字母,不会有数字或标点符号。假设手机能根据用户输入的数字完美预测出单词。
示例目标输出:
> GROK
4765
我的代码:
KEYPAD = {'A': '2', 'B': '2', 'C': '2', 'D': '3', 'E': '3', 'F': '3', 'G': '4', 'H': '4', 'I': '4', 'J': '5', 'K': '5', 'L': '5', 'M': '6', 'N': '6', 'O': '6', 'P': '7', 'Q': '7', 'R': '7', 'S': '7', 'T': '8', 'U': '8', 'V': '8', 'W': '9', 'X': '9', 'Y': '9', 'Z': '9'}
word = input("Enter word: ")
for key in word:
print(KEYPAD[key], end='')
结果:
我的代码返回的数字都是在同一行,没有空格,这正是我想要的。不过,我收到了一个通知:你的输出缺少一个结尾的换行符。
我试着在最后加上 '\n'
来添加一个换行,这样却出现了 行继续符后面有意外字符 的语法错误。
如果在最后加上 ' '
,结果就变成每个数字都在单独一行。
为了参考,我已经看过所有免费的模块,但没有使用过任何付费的。因为我的知识有限,请用简单的语言解释你的答案。
2 个回答
2
这里有一个更简短的解决方案:
KEYPAD = {'A': '2', 'B': '2', 'C': '2', 'D': '3', 'E': '3', 'F': '3', 'G': '4', 'H': '4', 'I': '4', 'J': '5', 'K': '5', 'L': '5', 'M': '6', 'N': '6', 'O': '6', 'P': '7', 'Q': '7', 'R': '7', 'S': '7', 'T': '8', 'U': '8', 'V': '8', 'W': '9', 'X': '9', 'Y': '9', 'Z': '9'}
word = input("Enter word: ")
print(''.join([KEYPAD[k] for k in word])) # This will join all the buttons together and print with an automatic newline
顺便说一下,你的错误信息“在行继续符后出现意外字符 SyntaxError.”的意思是你把 \n
放在了引号外面。\
放在引号外面表示要继续到下一行,所以它后面不能有其他文字,只能是换行。
4
你只需要在处理完输入字符串后打印出一个换行符:
KEYPAD = {'A': '2', 'B': '2', 'C': '2', 'D': '3', 'E': '3', 'F': '3', 'G': '4', 'H': '4', 'I': '4', 'J': '5', 'K': '5', 'L': '5', 'M': '6', 'N': '6', 'O': '6', 'P': '7', 'Q': '7', 'R': '7', 'S': '7', 'T': '8', 'U': '8', 'V': '8', 'W': '9', 'X': '9', 'Y': '9', 'Z': '9'}
word = input("Enter word: ")
for key in word:
print(KEYPAD[key], end='') #<-- this line suppresses the newline output
print() #<-- this adds the required newline at the end of all the characters