[英]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.