【问题标题】:How to print input when it's a float in Python? [duplicate]Python中的浮点数如何打印输入? [复制]
【发布时间】:2017-09-28 11:16:13
【问题描述】:

我想在答案中包含用户对“年龄”的回答。

但是,包含“年龄”会返回错误。似乎是因为它前面是float。有没有办法包含对“你多大了?”的回复?

代码如下:

name = input("What is your name? ")
age = float(input("How old are you? "))
answer1 = (age + "!? That's very old, " + name + "!")
answer2 = (age + "? You're still young, " + name + ".")
if age > 60:
    print(answer1)
if age < 60:
    print(answer2)

【问题讨论】:

    标签: python


    【解决方案1】:

    不像例如Java、Python 在连接对象(其中一些已经是字符串)时不会自动调用 __str__ 方法。你这样做的方式,你必须手动将其转换为字符串:

    answer1 = (str(age) + "!? That's very old, " + name + "!")
    

    但是,首先考虑使用正确的字符串格式:

    answer1 = ("{age}!? That's very old, {name}!".format(age=age, name=name))
    

    【讨论】:

    • 非常感谢您的回答。有没有办法删除添加到打印响应中的 .0 ?我看到:“65.0!?那很老了……”
    • 是的,您可以使用例如{age:.0f}。阅读字符串formatting docs 了解更多信息。
    【解决方案2】:

    这里有几个选项。

    1. 将年龄转换为字符串:

      answer1 = (str(age) + ...)

    2. 使用旧式字符串格式:

      answer1= "%f!? That's very old, %s!" % (age, name)

    3. 使用 Python 3.6 优秀的字符串插值:

      answer1 = f"{age}!? That's very old, {name}!"

    我会选择第三个。

    【讨论】:

    • 还有第四个方法,使用format,但我一直不喜欢它,尤其是现在可以使用字符串插值。
    • 你为什么不喜欢它? format是Python3.6之前的推荐方式。与插值不同,它在所有 Python 版本中都可用,而且它的使用对我来说似乎比旧式格式更自然。
    • 我猜这是我在 C 中的根源。从不喜欢它,从不关心说服别人不喜欢它。
    猜你喜欢
    • 2021-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 2017-06-02
    • 2012-12-08
    • 1970-01-01
    相关资源
    最近更新 更多