请帮助我!我不想打印空间

时间:2017-04-06 06:36:13

标签: python

考虑这个问题。

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

我的解决方案如下:

a=[]
a=raw_input("Enter text which you whant to translate in 'roverspraket':\n").lower()
def translate(a):
    for char in a:
        if char is "a" or char is 'e' or char is 'i' or char is 'o' or char is 'u' or char is ' ':
            print char,
        else:
            print char+'o'+char,
print(translate(a))

其输出如下:

Enter text which you whant to translate in 'roverspraket':
vinay<--- This is input
vov i non a yoy None

我的问题是我不希望这些之间有空间......我怎么能这样做?

提前致谢。

2 个答案:

答案 0 :(得分:0)

我认为返回扩展字符串更有用:

def rovarspraket(text):
    """ Translate text into robber-language """
    result = ""
    vowels = "aeiou"
    for char in text:
        result += char
        if char not in vowels:
            result += "o" + char
    return result

答案 1 :(得分:0)

要解决您的问题,我会translate获取输入字符串并返回修改后的字符串。然后可以毫无问题地打印该修改后的字符串。这是我的解决方案:

def translate(inp):
    out = ''
    for char in inp:
        if char not in ['a','e','i','o','u',' ']:
          out += char+'o'
        out += char

    return out

inp=input("Enter text which you whant to translate in 'roverspraket':\n").lower()

print(translate(inp))

注意:

  • 我已将raw_input更改为input。后者是Python 3.x标准,因为我看到你使用print(...)。如果您想使用Python 2.x,则必须保留raw_input

  • 通过检查or是否在字符列表中,我已经用更多的pythonic等价物替换了你的许多char。行为完全等同。只有我的版本看起来很清晰,甚至可能更快?

  • 我通过避免elif避免了一小段代码重复。虽然在这一小段代码中确实无关紧要,但我想指出这一点,因为当你开始编写更严肃的程序时,这可能是一个更大的交易。另请参阅this TED talk of Linus Torvalds(这主要与编程无关......)。