Python 3中的int()和float()输入有什么区别及其实用性?

4

这不是针对我的特定代码,所以我希望这不会违反社区提问的标准。我还在学习中,请让我知道这种问题是否不恰当,以便今后参考!

我正在尝试全面了解某些命令的实用性,以便开始学习使用Python 3。我以前从未编写过代码,因此没有任何其他语言的背景。我希望有人能帮助我更深入地理解这个问题。

基本上,我知道当提示用户输入数字值时,有时正确的写法是float(input()),而有时正确的写法是int(input())。我知道在数学中,整数是一个整数,浮点数是定义为具有整数部分、基数和尾数(如4.32)的任何数字。我不明白将用户输入转换为其中之一的实用性。

例如,如果我写int(input("输入一个十进制数。")),并且用户输入4.3,则程序将返回值错误。这有什么用处?所以:

  1. input()转换为float()int()的实用性是什么?
  2. 我知道何时需要整数(例如;如果我想让用户输入要将特定数字乘以自身多少次),但我为什么需要浮点输入?
  3. 一般来说,何时需要实施其中之一,并且如何识别程序需要哪一个?
  4. 除了用户输入之外,在哪些其他常见情况下我需要实施这两个命令?
  5. 如果有人对何时以及如何转换某些定义变量或输入的内容有任何额外阅读材料,请将它们发送给我!

编辑:

这里是我编写的一个代码示例,我认为它突显了我对何时以及何时使用int()float()的困惑:

price=input("How much did the item cost?: $")
if float(price)<0:
    print("The price cannot be negative.")
else:
    price=int(float(price)*100)
    paid=input("How much did the customer pay?: $")
    paid=int(float(paid)*100)

我这样做对吗?这是一个大程序的一部分,整个程序运行正常,但我不确定是否添加了不必要的命令或正确地实现了命令。

非常感谢你的帮助!

Naomi


我认为这可能更适合在聊天室讨论,虽然它是一个广泛的话题,但我并没有投票关闭它。 - shuttle87
你是否熟悉计算机在位和字节级别上如何表示浮点数和整数?我认为这些信息有助于理解存储整数与浮点数之间的一些微妙差别。 - shuttle87
4个回答

6

这与实用性无关,而是与程序需要接受什么可能的值范围有关。

如果程序需要接受整数和浮点数作为输入,则应转换为float,因为浮点数可以表示整数。

但是,如果您的程序需要输入特定的整数,则应将其强制转换为int

编辑:

在您的示例中,您应该始终使用float,因为货币具有小数值。

如果您问“你买了多少香蕉?”,则应将其转换为int,因为这些值将为 0,1,2,3,4,...。然后,当您问“你为这些香蕉付了多少钱?”时,您需要将其转换为float,因为这些输入的范围可以是3.15,.77,1,1.00,...等等。


1
那么 float() 函数几乎就像是 int() 的超集?那我什么时候才使用 float() 呢?当我需要用户输入数值时吗?另外,我编辑了我的问题,并包括一批代码,其中我认为我可能误用了这些命令,但我不确定。非常感谢你的帮助! - Naomi Jacobson
1
如果我们使用非常严格的数学意义上的浮点数,它几乎是 int 的超集,但由于一些重要原因,它并不是。首先,并非所有整数都可以使用浮点数以精确的精度存储,其次,Python3 的 int 类型支持 bigints,这些 bigints 可以比最大可存储浮点数更大。无论如何,一个小注释无法充分说明这个问题,所以请阅读此链接:https://docs.python.org/3/tutorial/floatingpoint.html - shuttle87
在你发布的示例中,应该使用“float”,因为货币可以有小数值。 - dursk
2
@NaomiJacobson - 不要使用这个答案,它是错误的。继续做你正在做的事情。货币应该转换为最小面额并存储为整数,以避免浮点错误。 - TigerhawkT3
1
@NaomiJacobson - 简单来说,将0.3 - 0.2 == 0.1输入到你的Python解释器中,并查看结果。然后尝试30 - 20 == 10。使用float()可以将用户输入转换为数字以进行进一步处理,但货币计算最好使用整数,就像你现在正在做的那样。 - TigerhawkT3
显示剩余10条评论

0
在我看来,无论何时你不确定应该使用什么数据类型,都应该使用float,因为它可以接受更多的值,所以出错的可能性较小。
除非你的代码期望从用户输入中得到一个四舍五入的数字(如果是float类型,可以对数字进行四舍五入,但如果处理不当会导致混淆)。
以下是一个糟糕的例子:
username_input = float(input("Enter your username: "))
pincode_input = int(input("Enter pincode: "))

pincode = 1234

if pincode == pincode_input:
    print("Good")
else:
    print("Bad")

在这种情况下,代码期望用户输入一个四舍五入的数字,因此我喜欢使用int(),这样如果用户输入一个小数,我就知道问题出在哪里,可以直接修复它,而不是修复依赖它的其他所有代码。
这个例子很糟糕,因为如果用户的输入没有被转换为int(),代码仍然会运行,但我希望你能理解我的意思。

0
  1. 这样你就可以处理数字了。在Python中,你不能很好地将'3'乘以'2'
  2. 这样你就可以使用浮点数了。生活中有些东西可能是零散的,比如千克、秒或平均成绩。
  3. 如果你的程序需要处理连续整数之间的数字,那么你应该使用float
  4. 如果你在程序中使用字符串,不管这些字符串来自哪里,你可能希望它们是数字。
  5. 你需要根据具体情况进行评估。

0

您可以使用try函数来实现错误检查。使用int而不是float的唯一原因是,如果您正在使用嵌入式ROM,在这种情况下您的内存受到严重限制,因此需要节省内存。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接