如果字符串中的字母是辅音,则将字母加倍并在中间加上“o”,否则加上“n”

2024-09-28 18:48:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我想解决一个问题,这个问题要求我用一个句子,把每个辅音翻一番,中间加个“o”

我知道可以在一行中使用if语句,但是else语句不起作用

vowels = list('aeiouyäöå')
consonants = list('qwrtpsdfghjklzxcvbnm')


# if letter is a consonant then double it and out 'o' in between.
def rovarspraket(sentence):
    return ''.join([letter for letter in sentence if letter in vowels else (letter + 'o' + letter)])

print(rovarspraket('hello friend'))
# should output 'hohelollolo fofrorienondod'.

Tags: inifis语句elsesentencelist句子
2条回答

空间也很重要:

return ''.join(letter if letter in vowels or letter == ' ' else (letter + 'o' + letter)for letter in sentence)

所以,代码:

vowels = list('aeiouyäöå')
consonants = list('qwrtpsdfghjklzxcvbnm')


# if letter is a consonant then double it and out 'o' in between.
def rovarspraket(sentence):
    return ''.join(letter if letter in vowels or letter == ' ' else (letter + 'o' + letter)for letter in sentence)

print(rovarspraket('hello friend'))

输出:

hohelollolo fofrorienondod

条件理解中else部分的语法有点错误:

def rovarspraket(sentence):
    return ''.join([l if l in vowels else (l + 'o' + l) for l in sentence])

或者更好(更强大的wrt空白):

def rovarspraket(sentence):
    return ''.join([(l + 'o' + l) if l in consonants else l for l in sentence])

>>> print(rovarspraket('hello friend'))
hohelollolo fofrorienondod

相关问题 更多 >