Python: 如何在一行中打印所有条件的结果
Python: How to print results from conditions all in one line
我是编码新手,我在 Python 练习网站上发现了这个练习题。说明是这样的:
"Write a function translate() that will translate a text into "rövarspråket”(瑞典语 "robber's language")。也就是说,将每个辅音加倍并在其间放置一个 "o"。例如,translate("this is fun") 应该 return 字符串 "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
那么如何将所有这些字符串放在一行中呢?我挠头了这么久。请帮忙,谢谢:)
只需在打印函数中使用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'))
您可以迭代地连接字符串。您应该包括一个空格作为要排除的字符的一部分,以避免在空格之间放置 '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
与生成器表达式一起使用,该生成器表达式 returns 通过 三元运算符 :
正确的字母组合
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'
尝试将其追加到临时字符串中并在末尾打印 ;)
print 让您换行。改为使用连接和新字符串(此处新字符串称为结果):
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'))
我是编码新手,我在 Python 练习网站上发现了这个练习题。说明是这样的:
"Write a function translate() that will translate a text into "rövarspråket”(瑞典语 "robber's language")。也就是说,将每个辅音加倍并在其间放置一个 "o"。例如,translate("this is fun") 应该 return 字符串 "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
那么如何将所有这些字符串放在一行中呢?我挠头了这么久。请帮忙,谢谢:)
只需在打印函数中使用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'))
您可以迭代地连接字符串。您应该包括一个空格作为要排除的字符的一部分,以避免在空格之间放置 '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
与生成器表达式一起使用,该生成器表达式 returns 通过 三元运算符 :
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'
尝试将其追加到临时字符串中并在末尾打印 ;)
print 让您换行。改为使用连接和新字符串(此处新字符串称为结果):
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'))