题目描述
一般的手机的键盘是这样的:
要按出英文字母就必须要按数字键多下。例如要按出x就得按9两下,第一下会出w,而第二下会把w变成x。0键按一下会出一个空格。
你的任务是读取若干句只包含英文小写字母和空格的句子,求出要在手机上打出这个句子至少需要按多少下键盘。
输入输出格式
输入格式:
一行一个句子,只包含英文小写字母和空格,且不超过200个字符。
输出格式:
一行一个整数,表示按键盘的总次数。
输入输出样例
输入样例#1:
test
输出样例#1:
8
输入样例#2:
i have a dream
输出样例#2:
23
这道题对于c++来说也许不难,但是对于Python来说却有点坑。因为:
这题数据的行尾是windows,你处理一下。 ———— lin_toto
洛谷的评测机为Linux环境,(\r\n)
而通常情况下我们解释器的环境为Windows,(\n)
所以要处理数据行尾(如果您使用Linux请自行尝试)
果断选择字典做(也许有点长)。
# -*- coding: utf-8 -*-
Keyboard = {
'a':'1',
'b':'2',
'c':'3',
'd':'1',
'e':'2',
'f':'3',
'g':'1',
'h':'2',
'i':'3',
'j':'1',
'k':'2',
'l':'3',
'm':'1',
'n':'2',
'o':'3',
'p':'1',
'q':'2',
'r':'3',
's':'4',
't':'1',
'u':'2',
'v':'3',
'w':'1',
'x':'2',
'y':'3',
'z':'4',
' ':'1',
}
sen = input()
#不能用sen = sen.strip()
sen = sen[:-1]
s = 0
for every_char in sen:
n = int(Keyboard[every_char])
s += n
print(s)
我们使用 sen = sen[:-1] 来处理掉数据末尾的空行,不然。。会很感人的
为什么不能使用strip()?
因为strip()会去除行头和行尾指定的字符(默认为空格或换行符)或字符序列
而第一个字符有可能是空格
好了,解释完毕。
代码写得很精干也很正确。 ————老猿Python