日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

【Python CheckiO 题解】Bird Language

發布時間:2023/12/10 python 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Python CheckiO 题解】Bird Language 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

CheckiO 是面向初學者和高級程序員的編碼游戲,使用 Python 和 JavaScript 解決棘手的挑戰和有趣的任務,從而提高你的編碼技能,本博客主要記錄自己用 Python 在闖關時的做題思路和實現代碼,同時也學習學習其他大神寫的代碼。

CheckiO 官網:https://checkio.org/

我的 CheckiO 主頁:https://py.checkio.org/user/TRHX/

CheckiO 題解系列專欄:https://itrhx.blog.csdn.net/category_9536424.html

CheckiO 所有題解源代碼:https://github.com/TRHX/Python-CheckiO-Exercise


題目描述

【Bird Language】:斯蒂芬(Stephan)的一個朋友恰巧是個小機器鳥。最近,他正試圖教它如何講基本語言。今天,這只鳥說出了它的第一個詞:“ hieeelalaooo”。這聽起來很像“hello”,但元音太多。斯蒂芬(Stephan)向尼古拉(Nikola)求助,他幫助檢查了鳥是如何改變單詞的。利用他們發現的信息,幫助他們制作翻譯模塊。

鳥通過兩個規則轉換單詞:(元音字母:aeiouy)

  • 在每個輔音字母之后,小鳥都會附加一個隨機的元音字母(l?la 或 le);
  • 在每個元音字母之后,小鳥都會附加兩個相同的字母(a?aaa)。

給您一個鳥類學的短語,它是由幾個空格隔開的單詞(每對單詞由一個空格隔開)。鳥不知道如何標點短語,只說字母。所有單詞均以小寫形式給出。您應該將此短語從鳥語翻譯成更容易理解的東西。

【鏈接】:https://py.checkio.org/mission/bird-language/

【輸入】:一個小鳥說的短語(字符串)

【輸出】:翻譯過后的正確短語(字符串)

【前提】:re.match("\A([a-z]+\ ?)+(?<!\ )\Z", phrase);A phrase always has the translation.

【范例】

translate("hieeelalaooo") == "hello" translate("hoooowe yyyooouuu duoooiiine") == "how you doin" translate("aaa bo cy da eee fe") == "a b c d e f" translate("sooooso aaaaaaaaa") == "sos aaa"

解題思路

簡單來說,我們要解決的問題就是,將原來的字符串,去掉輔音字母后面的的一個元音字母,去掉元音字母后面的兩個相同的字母, 我們可以設置一個新列表,循環訪問原字符串中的每一個元素;

當遇到一個元音字母時,就忽略該字母后兩個元素;

當遇到一個輔音字母時,就忽略該字母后一個元素;

當遇到空格時,就忽略掉該空格。

代碼實現

VOWELS = "aeiouy"def translate(phrase):new_list = []i = 0while i < len(phrase):new_list.append(phrase[i])if phrase[i] in VOWELS:i += 3elif phrase[i] == ' ':i += 1else:i += 2return ''.join(new_list)if __name__ == '__main__':print("Example:")print(translate("hieeelalaooo"))# These "asserts" using only for self-checking and not necessary for auto-testingassert translate("hieeelalaooo") == "hello", "Hi!"assert translate("hoooowe yyyooouuu duoooiiine") == "how you doin", "Joey?"assert translate("aaa bo cy da eee fe") == "a b c d e f", "Alphabet"assert translate("sooooso aaaaaaaaa") == "sos aaa", "Mayday, mayday"print("Coding complete? Click 'Check' to review your tests and earn cool rewards!")

大神解答

大神解答 NO.1

from re import subdef translate(phrase):prune = lambda exp, phr: sub(exp.format('aeiouy'), r'\1', phr)return prune(r'([{0}])\1\1', prune(r'([^ {0}])[{0}]', phrase))

大神解答 NO.2

import redef translate(text):text = re.sub('(?P<c>[bcdfghjklmnpqrstvwxz])[aeiouy]', '\g<c>', text)text = re.sub('(?P<v>[aeiouy]){3}', '\g<v>', text)return text

大神解答 NO.3

translate=lambda s:s and s[0]+translate(s[1+(s[0]!=' ')+(s[0]in'aeiouy'):])

總結

以上是生活随笔為你收集整理的【Python CheckiO 题解】Bird Language的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。