考虑这个问题。
编写一个函数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
我的问题是我不希望这些之间有空间......我怎么能这样做?
提前致谢。
答案 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(这主要与编程无关......)。