Python:如何在一行中打印条件的结果

时间:2016-10-27 12:24:52

标签: python if-statement for-loop printing conditional

我是编码的新手,我在Python练习网站上发现了这个练习题。说明是这样的:

“编写一个函数translate(),将文本转换为”rövarspråket“(瑞典语为”强盗的语言“)。也就是说,每个辅音加倍并在其间放置”o“。例如,翻译( “这很有趣”)应该返回字符串“tothohisos isos fofunon”。

所以我输入了这段代码:

def translate(string):
    vowels=['a','e','i','o','u']
    for letter in string:
        if letter in vowels:
            print(letter)
        else:
            print(letter+'o'+letter)
print(translate('this is fun'))

我得到了这个:

tot
hoh
i
sos
 o 
i
sos
 o 
fof
u
non
None

那么如何将所有这些字符串放在一行?我一直在摸不着头脑。请帮忙,谢谢你:)

4 个答案:

答案 0 :(得分:2)

您可以迭代地连接字符串。您应该在要排除的字符中包含一个空格,以避免在空格之间放置'o'

def translate(string):
    notconsonant = ['a','e','i','o','u', ' ']
    s = ''
    for letter in string:
        if letter in notconsonant:
            s += letter
        else:
            s += letter+'o'+letter
    return s

或者使用join生成器表达式,通过三元运算符返回正确的字母组合:

def translate(string):
    notconsonant = {'a','e','i','o','u', ' '}
    return ''.join(letter if letter in notconsonant else letter+'o'+letter for letter in string)

请注意,如果您将列表设置为集合,则可以加快查找不是辅音的字母,因为集合的成员资格检查相对更快。

>>> translate('this is fun')
'tothohisos isos fofunon'

答案 1 :(得分:0)

只需在打印功能中使用end参数即可。 (我假设你使用的是python 3.x,print是一个函数)

def translate(string):
    vowels=['a','e','i','o','u']
    for letter in string:
        if letter in vowels:
            print(letter, end='')
        else:
            print(letter+'o'+letter, end='')
print(translate('this is fun'))

答案 2 :(得分:0)

尝试将其附加到临时字符串中并在末尾打印;)

答案 3 :(得分:0)

打印让您进入新行。使用连接和新字符串(此处新字符串称为结果):

def translate(string):
    vowels=['a','e','i','o','u']
    # Use a new variable :
    result = ''
    for letter in string:
        if letter in vowels:
            result = result + letter
        else:
            result = result + letter + 'o' + letter
    return result

print(translate('this is fun'))