检查列表中用户输入给出的 int 和 float

Check for int and float given by the user input in a list

如何在列表中具体查看用户输入提供的数据类型?

例如:

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]

尝试检查小数点:

>>> user_inp = [float(number) if '.' in number else int(number) for number in input("Enter Number: ").replace(',', ' ').split()]
Enter Number: 1.0 2 3.0 4
>>> user_inp
[1.0, 2, 3.0, 4]
>>> 

您不需要手动检查 type,如果您使用 ast.literal_eval,类型将根据字符串表示保留,也就是说,以浮点表示输入的值将存储为浮点数,整数表示将存储为整数,否则将存储为字符串:

import ast
user_inp = [ast.literal_eval(number) for number in input(
"Enter Number: ").replace(',', ' ').split()]