Python程式設計入門——第五週作業
阿新 • • 發佈:2019-01-09
這裡記錄在網易雲課堂上的課後作業,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 |