【问题标题】:Printing results without spaces python3 [duplicate]打印结果没有空格python3 [重复]
【发布时间】:2017-03-17 12:17:18
【问题描述】:
def WhichAreCaps(Word):
    for w in Word:
        if w.isupper() == True:
          print (w)

WhichAreCaps("IJkdLenMd")

结果:

I
J
L
M

所以我正在尝试构建一个在字符串中查找大写字母并打印出字母的代码。问题是我希望结果以一行字符串的形式出现,而不是四行。有没有办法这样做? (我只是个初学者;;)

【问题讨论】:

  • 你们''.join(..)的人物在一起……
  • 参见print() 文档(尤其是end 参数)。
  • @WillemVanOnsem 我试过打印 (" ".join(w)),还是一样的问题
  • 顺便说一句,如果将结果作为字符串返回而不是打印出来,您的函数会更有用。这样,调用者可以自己打印结果,或者在打印结果之前对结果进行一些其他处理。
  • @ChikkinMan 改变方法:"".join(c for c in word if c.isupper()).

标签: python python-3.x printing


【解决方案1】:

print 函数接受end 关键字参数来指定打印后字符串的结尾。默认情况下它设置为新行(\n),您可以简单地使用空格。另请注意,使用== True 检查任何表达式的真值是错误的,因为True 解释为 1,并且返回 1 的所有内容都将解释为 True。你可以简单地使用if w.isupper():

def WhichAreCaps(Word):
    for w in Word:
        if w.isupper():
          print(w, end=' ')

另一种方法是 yielding 函数中的元音并使其成为生成器:

def WhichAreCaps(Word):
    for w in Word:
        if w.isupper():
            yield w

然后你可以以任何你喜欢的方式加入结果并打印出来:

print(','.join(WhichAreCaps(Word))) 

毕竟,作为这个问题的更 Pythonic 方法,您可以简单地在 str.join 中使用列表推导:

print(' '.join([w for w in Word if w.isupper()]))

【讨论】:

  • 我会在 return 之前用一个空的 print() 清理它。
  • @Ev.Kounis 非常感谢。
  • @Kasramvd 是的,使用了 end=" " 并且有效。!谢谢!
【解决方案2】:

您可以将字母附加到一个空字符串,然后返回它。

def WhichAreCaps(Word):
    ans=''
    for w in Word:
        if w.isupper() == True:
          ans+=w
    print(ans)

【讨论】:

  • 我看不懂 dv.. 否决者能解释一下吗?
  • @Ev.Kounis 也许是因为它是一个纯代码的答案。或者,可能投反对票的人对使用 Python 2 print 声明的早期版本的答案进行了投票,并且没有注意到 Akshay 解决了这个问题。
  • 谢谢大家。我对 SO 比较陌生。
  • 我投了反对票,因为 1)它是一个代码唯一的答案,2)== True 是多余的,而且主要是 3)我不容忍字符串连接,因为它性能不佳。
猜你喜欢
  • 2016-10-31
  • 2014-04-01
  • 2013-03-05
  • 2016-01-24
  • 1970-01-01
  • 2015-04-24
  • 2021-03-18
  • 1970-01-01
  • 2016-02-29
相关资源
最近更新 更多