字典输出在一行上

时间:2014-05-27 20:09:17

标签: python python-3.3

我是初学者,通过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='')

结果:

我的代码返回相同的数字,全部在一行上,数字之间没有空格,正如我想要的那样。但是,我收到此通知: 您的输出缺少一个尾随的换行符。

Missing trailing newline character

我尝试添加'\n'以在最后添加新行;这给了我行继续符后的意外字符 SyntaxError。

最后添加' '会导致每行一位数。


作为参考,我已经浏览了所有免费模块,但没有任何付费模块。由于我的知识有限,请以简单的方式解释您的答案。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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放在引号之外。引号之外的\表示在下一行继续,因此除了换行符之外不应有任何其他文字。