[英]Python 3 // Printing an error if a string contains no vowels
编写一个函数,它接受一个没有空格的字符串参数,在字符串中搜索元音(字母“a”、“e”、“i”、“o”、“u”),用大写字符替换它们, 并打印出大写的新字符串,并从函数中返回新字符串。 您应该使用
isalpha
验证它是一个字符串参数(因此不允许使用空格!),如果不是,则返回错误(错误消息应该带有“错误:”)。例如,如果字符串输入是“miscellaneous”,那么您的程序将打印出来并返回“mIscEllAnEOUs”。 如果字符串中没有元音,则打印“Nothing to convert!” 并返回
None
。
到目前为止,这就是我所拥有的,但我在作业中以粗体显示的部分遇到了麻烦。
def uppercase(word):
vowels = "aeiou"
error_msg = "Error: not a string."
nothing_msg = "Nothing to convert!"
new_word = []
for letter in word:
if word.isalpha():
if letter in vowels:
new_word.append(letter.upper())
else:
new_word.append(letter.lower())
else:
print(error_msg)
return None
new_word = ''.join(new_word)
return new_word
要检查字符串是否全部为字母,您可以使用str.isalpha
。 要检查是否包含元音,您可以在any
使用生成器表达式来确认至少一个字母是元音。 最后,您可以使用join
另一个生成器表达式进行转换,只将元音大写,然后返回一个新字符串。
def uppercase(word):
if not word.isalpha():
return 'Error'
if not any(letter in 'aeiou' for letter in word):
return 'Nothing to convert!'
return ''.join(letter.upper() if letter in 'aeiou' else letter for letter in word)
例子
>>> uppercase('miscellaneous')
'mIscEllAnEOUs'
>>> uppercase('abc123')
'Error'
>>> uppercase('xyz')
'Nothing to convert!'
只是为了提供一种不同的方法,除了 CoryKramer 回答的内容之外,您还可以使用 python re
模块:
import re
def uppercase(word):
if not word.isalpha():
return 'Error'
if not any(letter in 'aeiou' for letter in word.lower()):
return 'Nothing to convert!'
return re.sub(r'[aeiou]', lambda m: m.group().upper(), word)
我觉得这样更简洁。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.