題目描述
一般的手機的鍵盤是這樣的:
要按出英文字母就必須要按數字鍵多下。例如要按出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