有人可以帮忙吗。 我想创建一个程序,可以计算由空格和/或标点符号分隔的字符串中的单词数。你应该只计算元音和辅音交替出现的单词。一个单词不能有两个连续的元音或辅音。单字母单词不计算在内。忽略文件中不是元音或常量的任何内容。用单个空格替换字母表中没有的任何内容。每个字母的区分大小写并不重要。
要使用的字母 元音 - A E I O U Y. 辅音 - B C D F G H J K L M N P Q R S T V W X Z
输入: 一个字符串,例如"你好,有一个伟大的新世界"
输出: 在上面的输入字符串中找到的所需单词的数量。例如1
样品:
"欢迎来到Radix !!!" == 2(到基数)
"每个人,谢谢你试试这个。" == 2(每个人)
"你好,有一个伟大的新世界" == 1(新)
"玛丽有,一,小,羊肉" == 2(玛丽)
答案 0 :(得分:0)
<body ng-controller="mainCtrl as MC">
<div>
<div ng-repeat="(item,value) in MC.items">
{{item}} <input type="text" ng-model="MC.items[item]"/>
</div>
</div>
<button ng-click="MC.submitMe()">Save</button>
Change your ng-model as above
这将扫描文件,每行找到有效的单词并打印出符合条件的单词数。您可以将import string,re
VOWELS=[x.lower() for x in "A E I O U Y".split(" ")]
CONSONANTS = [x.lower() for x in "B C D F G H J K L M N P Q R S T V W X Z".split(" ") ]
FILE_PATH = 'sentences.txt'
PUNCT = '[ %s]'% string.punctuation #[ !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~]
def isAlt(word):
#True if word is valid
word=word.lower() #Non-case-sensitive
for x in range(len(word)-1):
if not (word[x] in VOWELS and word[x+1] in CONSONANTS)and not(word[x+1] in VOWELS and word[x] in CONSONANTS):
#Sorry about that condition, I can probably return that whole line
return False
return True
for line in open(FILE_PATH,'r'):
out=re.split(PUNCT,line.strip())
out=[x for x in out if x and len(x)>1 and isAlt(x)]
print(len(out))
更改为len(out)
列表而不是数字。
答案 1 :(得分:0)
这是作业,不是吗?
试试这个正则表达式:
\b[aeiouy]?([bcdfghjklmnpqrstvwxz][aeiouy])*[bcdfghjklmnpqrstvwxz]?\b
它会找到所有带有交替元音/辅音的单词。请注意,它也将传递单字母单词,随后将其过滤掉。并使用ignore-case标志运行它。