问题描述
- 有没有Python大神会做这个吗?
-
CS1210 Computer Science I: Foundations
Homework 2: Fun with Defs!
Due Monday, September 21 at 11:59PM简介
这个家庭作业包括4个挑战, 每一部分都是由一个单独的函数组。每一部分的函数怎么写都有详细描述。
请注意本文中函数的的命名规则,这很重要,因为你的解决方案会通过程序来扫描和进行评分:没有遵循这些要求将导致评估代码失败和等级降低。我交什么呢?
跟家庭作业1不同的是,所有的功能定义必须提交在单一的,有适当的注释,并且命名为.py的Python文件里。当然,你也可以在截止日期前提一直交新的方案。
注意:如果你交的文件是RTF文件,word文档或其包含Python命令的文档,你将得不到学分。Pyglish
孩子们总是玩各种语言游戏, 文字转化为晦涩的口语。
Pig Latin就是一个很好的例子。
Pig Latin游戏是将单词的第一个字母会放到最后,并且将一个双元音’ay’放在单词后面。(比如:"together" 会变成 "ogethertay")。另外还有一种类似的语言:Ubbi Dubbi。Ubbi Dubbi被一个叫Zoom的儿童电视节目推广了很多年。在Ubbi Dubbi游戏中,一个额外的"ub"会被插入到音节中。所以 "together"会变成"t-ub-ogeth-ub-er".在这次的任务当中。我们会用特定的元音、辅音、音节和supports构建一个类似于Ubbi Dubbi的编码系统
首先,会有一些定义:单词是由字母组成的。这些字母会被分类成元音字母和辅音字母。这其实非常难。因为这些单词并不能直接分类。而且它涉及到这些字母的实际发音。所以决定一个单词是元音还是辅音取决于这个字母在句子中的哪个地方出现。为了这次的任务,我们有以下的定义元音字母的规则:
’a’, ’e’, ’i’, and ’o’ 总是元音字母;
’u’ 是元音,除非它后面有 ’g’ or ’q’;
’y’ 是元音除非它是在一个单词的开头;
’w’ 在其他元音后面的时候,它也是一个元音
所有其他的字母都认为是辅音字母群(cluster)指的是一个连续的元音或辅音序列.。例如,比如在“tomorrow”这个单词中,可以分为6个群[’t’, ’o’, ’m’, ’o’, ’rr’, ’ow’] 。每一个音节由一个元音群跟着一个辅音群。如果一个单词是以辅音开头将会有一个前半音节。如果一个单词是以元音结尾,则会有一个尾半音节。单词’tomorrow’有6个组,但是只有4个音节[’t’,’om’, ’orr’, ’ow’]。其中包含一个前半音节’t’ (不是以元音开头)。和一个尾半音节 ’ow’(不是以辅音结尾)。
最后,单词里的每一个音节当中会被插入一个ub(一个愚蠢的音节,比如 ’ub’或者’oy’)然后重构句子:
当我们使用ub标准的时候’tomorrow’会变成’tubomuborrubow’ ,当我们使用”oy”的时候会变成’toyomoyorroyow’。我会将会把这个任务分解成4个函数。所有的函数都应该出现在一个同一个文件里。请确认你们的函数是用的我们指定的函数名称——现在这不是你改变函数名称或者参数的时候。如果程序不能运行你的函数,你将得不到学分
Revised September 15, 2015def vowel(w, i):
根据上述规则,判断w单词中的第i个字母是不是元音字母,如果是的话返回True。例如:vowe l ( ’ t omo r r ow’ , 1 )
Tr u e
vowe l ( ’ t omo r r ow’ , 5 )
Fa l s e
vowe l ( ’ boy ’ , 2 )
Tr u e
vowe l ( ’wh a t ’ , 0 )
Fa l s e
这里定义的元音并不是标准意义上的元音,但是请确保你的代码按照上面的指令精确执行。def syllables(w):
第二个函数返回w单词的音节列表。但是请确保你的代码按照上面的指令精确执行。例如:s y l l a b l e s ( ’ t omo r r ow’ )
[ ’ t ’ , ’ om’ , ’ o r r ’ , ’ ow’ ]
s y l l a b l e s ( ’ y e s t e r d a y ’ )
[ ’ y ’ , ’ e s t ’ , ’ e r d ’ , ’ ay ’ ]
s y l l a b l e s ( ’wh a t e v e r ’ )
[ ’wh ’ , ’ a t ’ , ’ e v ’ , ’ e r ’ ]
s y l l a b l e s ( ’ s omewh a t ’ )
[ ’ s ’ , ’ om’ , ’ ewh ’ , ’ a t ’ ]
s y l l a b l e s ( ’ f o r g e t f u l ’ )
[ ’ f ’ , ’org’ , ’e t f ’ , ’ul ’ ]
s y l l a b l e s ( ’ g u i d e l i n e s ’ )
[ ’ gu ’ , ’ i d ’ , ’ e l ’ , ’ i n ’ , ’ e s ’ ]def encode(S, ub):
这个函数中,S代表的是一个句子,ub代表的是被插入的字母。返回被翻译后的句子。比如:e n c o d e ( ’ Fo u r s c o r e a n d s e v e n y e a r s a g o ’ , ’ u b ’ )
’ Fu b o u r s c u b o r u b e a n d s u b e v u b e n y u b e a r s a g u b o ’
e n c o d e ( ’ Fo u r s c o r e a n d s e v e n y e a r s a g o ’ , ’ a y ’ )
’ Fa y o u r s c a y o r a y e a n d s a y e v a y e n y a y e a r s a g a y o ’
e n c o d e ( ’ S a n t a b r o u g h t me ma ny Ch r i s tma s t o y s ’ , ’ o y ’ )
’ So y a n t o y a b r o y o u g h t mo y e mo y a ny Ch r o y i s tmo y a s t o y o y s ’注意资本化是保留的,虽然没有标点符号。
2 Revised September 15, 2015
def decode(S, ub):
最后一个函数的功能是解码被翻译后的句子,比如:d e c o d e ( e n c o d e ( ’ S a n t a b r o u g h t me ma ny Ch r i s tma s t o y s ’ , ’ o y ’ ) , ’ o y ’ )
’ S a n t a b r o u g h t me ma ny Ch r i s tma s t o y s ’
也许它可能并不容易解码,你会强加什么条件给ub从而使它能被解码?在我的解决方案里,至少,ub它本身就是一个音节,这就简单多了,比如:
e n c o d e ( ’ S e e y o u r To y o t a d e a l e r t o d a y ’ , ’ o y ’ )
’ So y e e y o y o u r To y o y o y o t o y a d o y e a l o y e r t o y o d o y a y ’
d e c o d e ( e n c o d e ( ’ S e e y o u r To y o t a d e a l e r t o d a y ’ , ’ o y ’ ) , ’ o y ’ )
’ S e e y o u r To y o t a d e a l e r t o d a y ’
尽管如此,当你解码’Toyota’ ,并且它的ub单词为’oy’的时候。这会是一个噩梦!最后的思考
这里面没有一个函数是相当困难,并且其中的一部分是用了其他的函数功能去完成整个的任务。我的建议就是按照序列攻克一个个的函数,增加一些新的函数在你们的文件中,最后,如果加上一些测试案例并且能正常运转,这会对你的代码很有帮助。
解决方案
google一下,都是作业题,参考下
解决方案二:
怎么翻墙?大部分都是要钱的