【发布时间】:2021-10-28 22:52:31
【问题描述】:
如何在列表中具体检查用户输入提供的数据类型?
例如:
user_inp = [float(number) for number in input(
"Enter Number: ").replace(',', ' ').split()]
>>> print(user_inp)
Enter Number: 1 2 3 4
[1.0, 2.0, 3.0, 4.0]
我想专门检查用户是否在输入中包含小数。如果他们特别给出 1.0 或 2.0,那么我希望程序接受它,如果他们给出整数,那么程序应该接受整数。我使用 float 的原因是使用 int 会触发错误,并且用户可以输入他们想要的任何数字而不会导致程序崩溃。
期望的结果:
>>> print(user_inp)
Enter Number: 1 2 3 4
[1, 2, 3, 4]
>>> print(user_inp)
Enter Number: 1.0 2.0 3.0 4.0
[1.0, 2.0, 3.0, 4.0]
我尝试过的:
lst = []
for num in user_inp:
if isinstance(num, float):
lst.append(int(num))
print(lst)
# input: 1.0 2.0
# output: [1, 2]
【问题讨论】:
-
输入“1.0 2”会发生什么?
-
“我使用float的原因是使用int会触发错误”——为什么1会导致错误而1.0不会?
-
如果输入被解释为
floats,而它可以被解释为ints,为什么会导致问题? -
如果您有一个函数可以为输入中的单个项目适当地返回
float或int,您能了解如何使用它来解决问题吗?你能写出那个函数吗?如果你尝试会发生什么?
标签: python list floating-point integer