功能:返回一串非元音字母
Function: Returning a string of nonvowels
所以假设我已经定义了一个名为 vowel_call 的函数,它只从字符串中提取元音,我如何将这个函数集成到另一个名为 nonvowels 的函数中以 return 一串只有一般字符串中的非元音字母?
def nonvowels (word: str) -> str:
result = ''
for x in word:
if vowel_call(x) == False:
result = result + x
return result
assert nonvowels('book') == 'bk'
assert nonvowels('giraffe') == 'grff'
我尝试了没有断言语句的代码,Python 只返回短语的第一个非元音字母:(nonvowels('genie') = 'g'),但不返回 'gn'。使用 assert 语句,会产生错误。我应该怎么做才能修复代码?
你的函数 returns 太早了。将 return
语句的缩进减少到循环
之外
您的 return 语句是否包含在您的 if 语句中?如果是,那么 return 只有第一个非元音字母会不会是你的问题? vowel_call 方法 return 仅当字母不是元音时才为假吗?查看第一个建议,如果这不是您的问题,请告诉我。
第一次 if vowel_call(x) == False
计算结果为 True 时,您 return 在循环内,在检查完循环中的每个字符后,您需要将 return 移出循环字符串。
def nonvowels (word: str) -> str:
result = ''
for x in word:
if vowel_call(x) == False:
result = result + x
return result # outside loop
但最简单的方法是 return 列表理解 和 str.join
:
def nonvowels (word: str) -> str:
return "".join([x for x in word if not vowel_call(x)])
You can also with set operations find what you need.
sentence = 'It is a nice day!'
def find_vowels(s,):
import re
s = s.lower()
return set(re.findall(r'[aoiue]',s))
>>>find_vowels(sentence)
{'a', 'e', 'i'}
s_sentence = set(sentence.lower())
>>>non_vowels = s_sentence - find_vowels(sentence) - set(string.punctuation) - set(string.whitespace)
{'c', 'y', 'n', 't', 's', 'd'}
所以假设我已经定义了一个名为 vowel_call 的函数,它只从字符串中提取元音,我如何将这个函数集成到另一个名为 nonvowels 的函数中以 return 一串只有一般字符串中的非元音字母?
def nonvowels (word: str) -> str:
result = ''
for x in word:
if vowel_call(x) == False:
result = result + x
return result
assert nonvowels('book') == 'bk'
assert nonvowels('giraffe') == 'grff'
我尝试了没有断言语句的代码,Python 只返回短语的第一个非元音字母:(nonvowels('genie') = 'g'),但不返回 'gn'。使用 assert 语句,会产生错误。我应该怎么做才能修复代码?
你的函数 returns 太早了。将 return
语句的缩进减少到循环
您的 return 语句是否包含在您的 if 语句中?如果是,那么 return 只有第一个非元音字母会不会是你的问题? vowel_call 方法 return 仅当字母不是元音时才为假吗?查看第一个建议,如果这不是您的问题,请告诉我。
第一次 if vowel_call(x) == False
计算结果为 True 时,您 return 在循环内,在检查完循环中的每个字符后,您需要将 return 移出循环字符串。
def nonvowels (word: str) -> str:
result = ''
for x in word:
if vowel_call(x) == False:
result = result + x
return result # outside loop
但最简单的方法是 return 列表理解 和 str.join
:
def nonvowels (word: str) -> str:
return "".join([x for x in word if not vowel_call(x)])
You can also with set operations find what you need.
sentence = 'It is a nice day!'
def find_vowels(s,):
import re
s = s.lower()
return set(re.findall(r'[aoiue]',s))
>>>find_vowels(sentence)
{'a', 'e', 'i'}
s_sentence = set(sentence.lower())
>>>non_vowels = s_sentence - find_vowels(sentence) - set(string.punctuation) - set(string.whitespace)
{'c', 'y', 'n', 't', 's', 'd'}