检查列表中用户输入给出的 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()]
如何在列表中具体查看用户输入提供的数据类型?
例如:
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()]