【问题标题】:Python: How to print results from conditions all in one linePython:如何在一行中打印所有条件的结果
【发布时间】:2017-03-10 03:10:50
【问题描述】:

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

“编写一个函数 translate() 将文本翻译成“rövarspråket”(瑞典语为“强盗的语言”)。也就是说,将每个辅音加倍,并在其间放置一个出现的“o”。例如, translate( "this is fun") 应该返回字符串 "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

那么如何将所有这些字符串放在一行中呢?我已经挠头这么久了。请帮忙,谢谢:)

【问题讨论】:

  • 使用变量保存它们,然后在for循环后打印。

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


【解决方案1】:

只需在打印函数中使用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'))

【讨论】:

  • "tothohisos o isos o fofunon" - 把printprint(translate('this is fun'))拿走后的输出
【解决方案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'

【讨论】:

    【解决方案3】:

    尝试将它附加到一个临时字符串中并在最后打印它;)

    【讨论】:

      【解决方案4】:

      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'))
      

      【讨论】:

        猜你喜欢
        • 2021-12-13
        • 1970-01-01
        • 2018-06-07
        • 2023-01-11
        • 1970-01-01
        • 2013-07-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多