手機_NOI導刊2010普及(10)

很坑的換行符,煩了我一個多周

題目傳送門

題目描述

一般的手機的鍵盤是這樣的:

手機鍵盤
手機鍵盤

要按出英文字母就必須要按數字鍵多下。例如要按出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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章