【问题标题】:How to display output as an integer instead of a real number如何将输出显示为整数而不是实数
【发布时间】:2015-06-04 09:14:40
【问题描述】:

这不是我的确切代码,但我基本上是这样做的

    EnemyAttack = int(10)
    Move = input("| Cast an attack spell(1) | Cast a defense spell(2) |")
    if Move = ("2"):
       print ("You have casted a defense spell for 2 turns")
       EAN = 2
    if EAN >= 1:
       EnemyAttack = EnemyAttack / 2
       EAN = EAN - 1
    Health = Health - EnemyAttack

代码确实将敌人的攻击减半,但输出不是我想要的。

print ("You have been damaged for {}".format(EnemyAttack)

这显示

84.0 

我想让它输出

84

我已经将 EnemyAttack 定义为一个整数,所以我很困惑为什么它显示为一个实数。有什么解决办法吗?另外,如果可以,请使用我可以转换为我的情况的简单代码进行评论。谢谢。

【问题讨论】:

  • 如果输出的是EnemyAttack,那为什么是84而不是10或5呢?您确定您的代码传输正确吗?
  • @SuperBiasedMan 10 是一个例子,在实际代码中它是 84,如果给您造成任何混淆,请见谅

标签: python python-3.x


【解决方案1】:

您可以将其格式化为不带小数的格式,将其四舍五入为最接近的整数:

print("You have been damaged for {:.0f}".format(EnemyAttack))

: 是必需的分隔符;定义该值的格式说明之后的所有内容。我们在这里使用f 浮点格式化程序,.0 表示小数点后的零位。当你这样做时,小数点本身也会被删除。

这样做的好处是可以根据需要将数字向上舍入

>>> EnemyAttack = 84.0
>>> print("You have been damaged for {:.0f}".format(EnemyAttack))
You have been damaged for 84
>>> EnemyAttack = 84.6
>>> print("You have been damaged for {:.0f}".format(EnemyAttack))
You have been damaged for 85

详情请参阅Formatting Specification Mini-Language section

【讨论】:

  • 请问f是干什么用的?该代码现在可以完美运行,谢谢。但是 0 后面的 f 有什么作用呢?
  • @MaxyPicky:我将您链接到文档; : 之后的所有内容都是格式化规范(之前的所有内容都是指定要插入和格式化的值,省略它使用自动编号)。
  • 快速,也许是无关紧要的问题,但是如果我将 {.0f} 格式放在将要发生字符串的位置,会出现错误吗?例如
     word = ("Hello") print ("He said {.0f}.".format(word)) 
  • @MaxyPicky:是的,因为字符串对象对f 格式化代码一无所知。 str.format() 将格式化委托给值本身,所以 'Hello'.__format__('.0f') 失败了。
【解决方案2】:

在 Python 中,您无法定义变量名称的类型。 如果要整数除法,则必须使用整数除法运算符//

EnemyAttack = EnemyAttack // 2

【讨论】:

  • +1 这是问题的根源。我的印象是 OP 似乎认为 {} 格式不够聪明,无法在整数传递时识别并正确格式化它。
猜你喜欢
  • 1970-01-01
  • 2018-02-27
  • 1970-01-01
  • 2021-06-05
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 2022-12-17
  • 1970-01-01
相关资源
最近更新 更多