【问题标题】:Properly printing a character depending on a variable using python使用python根据变量正确打印字符
【发布时间】:2018-06-27 14:23:59
【问题描述】:

我想知道是否有一个好的 Python 方法来做这样的事情:

size1 = 4 
size2 = 3
value = size1 - size2

def isSign(value):
    if value > 0 :
        return "+"
    else :
        return ""

print("My total gain is" + isSign(value) + str(value))

在这种情况下,我的字符串应该如下所示:

My total gain is +1

在值为 -1 的情况下,我的字符串应如下所示:

My total gain is -1

在值为 0 的情况下,我的字符串应如下所示:

My total gain is 0

如果可能,我也想避免使用外部模块。

【问题讨论】:

  • @MoxieBall 但这给了+0,这是不希望的。我认为您的回答很好,您应该取消删除它。
  • @AlexHall 没有注意到这一点,删除了 dup 建议。我会取消删除它,以便记录 fstrings 方式

标签: python variables optimization printing sign


【解决方案1】:

您可以将isSign(value) 替换为(value > 0) * "+"

这是有效的,因为True == 1False == 0,一个数字n 次字符串是该字符串重复n 次,所以0 * "+" 是空字符串""

但是,有些人可能会觉得它不可读,我必须解释它是如何工作的事实证明了这一点。

使用 f 字符串:

f"My total gain is {(value > 0) * '+'}{value}"

【讨论】:

  • 所以用布尔值“乘”一个字符串决定是否打印它?有趣的!谢谢
  • @GaëtanGOUSSEAUD 不,这不是关于打印,而是关于字符串。相乘会产生一个新字符串,该字符串可能为空,也可能不为空。
  • 我实际上是在你编辑帖子之前写的,以便进一步理解 x)。您提供的信息非常丰富,谢谢!
  • 我将此答案标记为对我有帮助的答案,因为我实际上使用的是 python 2.7,而 fstrings 对我不起作用。
【解决方案2】:

f-strings 是一个很好的方法:

print(f'My total gain is {"+" if value > 0 else ""}{value}') 

【讨论】:

  • 确实更具教学性,我相信两者兼而有之很有趣。
【解决方案3】:

字符串格式为此提供了+ 标志:

>>> "{:+}".format(3)
'+3'
>>> "{:+}".format(-3)
'-3'

【讨论】:

  • 嗯,这很烦人。
猜你喜欢
  • 2019-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-16
  • 2016-05-29
  • 1970-01-01
  • 2012-12-12
  • 1970-01-01
相关资源
最近更新 更多