1. 程式人生 > >Python程式設計入門——第五週作業

Python程式設計入門——第五週作業

這裡記錄在網易雲課堂上的課後作業,Python環境為2.7,如果您有更好的演算法還望斧正!微笑

1.題目內容:
“Pig Latin”是一個英語兒童文字改寫遊戲,整個遊戲遵從下述規則:

(1). 母音字母是‘a’、‘e’、‘i’、‘o’、‘u’。字母‘y’在不是第一個字母的情況下,也被視作母音字母。其他字母均為子音字母。例如,單詞“yearly”有三個母音字母(分別為‘e’、‘a’和最後一個‘y’)和三個子音字母(第一個‘y’、‘r’和‘l’)。

(2). 如果英文單詞以母音字母開始,則在單詞末尾加入“hay”後得到“Pig Latin”對應單詞。例如,“ask”變為“askhay”,“use”變為“usehay”。

(3). 如果英文單詞以‘q’字母開始,並且後面有個字母‘u’,將“qu”移動到單詞末尾加入“ay”後得到“Pig Latin”對應單詞。例如,“quiet”變為“ietquay”,“quay”變為“ayquay”。

(4). 如果英文單詞以子音字母開始,所有連續的子音字母一起移動到單詞末尾加入“ay”後得到“Pig Latin”對應單詞。例如,“tomato”變為“omatotay”, “school” 變為“oolschay”,“you” 變為“ouyay”,“my” 變為“ymay ”,“ssssh” 變為“sssshay”。

(5). 如果英文單詞中有大寫字母,必須所有字母均轉換為小寫。 

輸入格式:
一系列單詞,單詞之間使用空格分隔。

輸出格式:
按照以上規則轉化每個單詞,單詞之間使用空格分隔。

輸入樣例:
Welcome to the Python world Are you ready

輸出樣例:
elcomeway otay ethay ythonpay orldway arehay ouyay eadyray
時間限制:500ms記憶體限制:32000kb

我的答案:

import string
s = raw_input()
words = s.split()
newWords = ''
for word in words:
    tmp = word.lower()
    if tmp[0] in 'aeiou':
        tmp += 'hay'
    elif tmp[0] == 'q' and tmp[1] == 'u':
        tmp = tmp[2:] + 'quay'
    else:
        tmp = tmp[1:] + tmp[0]
        for i in range(0, len(tmp)):
            if tmp[i] in 'aeiouy':
                break;
        tmp = tmp[i:] + tmp[:i] + 'ay'
    newWords += tmp + ' '
print newWords.strip()

用例 測試結果 執行時間 佔用記憶體 提示 得分
1 通過 18ms 5236kb 1
2 通過 18ms 5236kb 1

2.題目內容:

依次判斷一系列給定的字串是否為合法的 Python 識別符號。

輸入格式:
一系列字串,每個字串佔一行。

輸出格式:
判斷每行字串是否為合法的 Python 標示符,如果合法則輸出 True,否則輸出 False。

輸入樣例:
abc
_def
21gh

輸出樣例:
True
True
False
時間限制:500ms記憶體限制:32000kb
import re
tmp = raw_input()
while(tmp != ''):
    if not re.search(u'^[_a-zA-Z0-9]+$',tmp):
        print False
    elif not re.search(u'^[_a-zA-Z]+$',tmp[0]):
        print False
    else:
        print True
    tmp = raw_input()

用例 測試結果 執行時間 佔用記憶體 提示 得分
1 通過 17ms 5112kb 1
3.題目內容:
依次計算一系列給定字串的字母值,字母值為字串中每個字母對應的編號值(A對應1,B對應2,以此類推,不區分大小寫字母,非字母字元對應的值為0)的總和。例如,Colin 的字母值為 3 + 15 + 12 + 9 + 14 = 53

輸入格式:
一系列字串,每個字串佔一行。

輸出格式:
計算並輸出每行字串的字母值。

輸入樣例:
Colin
ABC

輸出樣例:
53
6
時間限制:500ms記憶體限制:32000kb
tmp = raw_input()
while(tmp != ''):
    num = 0
    tmp = tmp.lower()
    for c in tmp:
        i = ord(c) - 96
        if i < 1 or i > 26:
            i = 0
        num += i
    print num
    tmp = raw_input()

用例 測試結果 執行時間 佔用記憶體 提示 得分
1 通過 17ms 5112kb 1
2 通過 17ms 5116kb 1