解释为浮点数的整数输入
Integer input intepreted as a float
我有一个交互式菜单,如果数字是浮点数或不是给定列表的子集,用户必须在其中编辑一些数字。使用以下代码:
grades = np.array([-3,-10.5,0,7,4,8,4,7,10,5])
SevenGradeScale = np.array([-3, 0, 2, 4, 7, 10, 12])
for i in range(np.size(grades)):
if grades[i] not in SevenGradeScale:
while True:
if type(grades[i]) is np.float64:
print("{:f} is not a valid grade. The grade must be an integer.".format(grades[i]))
elif type(grades[i]) is np.int32:
print("{:d} is not within the seven grade scale.".format(grades[i]))
else:
type("{:f} is not a valid grade.".format(grades[i]))
#try:
grades[i] = input("Insert new grade: ")
我想做的是,用户编辑脚本认为无效的号码。但是当我试图输入一个整数时,我得到了一个浮点数。这是为什么?
-10.500000 is not a valid grade. The grade must be an integer.
Insert new grade: 10
10.000000 is not a valid grade. The grade must be an integer.
Insert new grade:
默认情况下numpy
数组只存储单一类型的数据。由于最初它包含一个浮点数(10.5
),所以整个数组都是浮点数。
您需要测试值而不是测试数据类型,例如通过 grades[i].is_integer()
。
这是因为 np.array
默认为浮动。如果你想把数组做成整数格式,就这样做:
foo = np.array([1, 3, 5, 7])
bar = foo.astype(int)
我有一个交互式菜单,如果数字是浮点数或不是给定列表的子集,用户必须在其中编辑一些数字。使用以下代码:
grades = np.array([-3,-10.5,0,7,4,8,4,7,10,5])
SevenGradeScale = np.array([-3, 0, 2, 4, 7, 10, 12])
for i in range(np.size(grades)):
if grades[i] not in SevenGradeScale:
while True:
if type(grades[i]) is np.float64:
print("{:f} is not a valid grade. The grade must be an integer.".format(grades[i]))
elif type(grades[i]) is np.int32:
print("{:d} is not within the seven grade scale.".format(grades[i]))
else:
type("{:f} is not a valid grade.".format(grades[i]))
#try:
grades[i] = input("Insert new grade: ")
我想做的是,用户编辑脚本认为无效的号码。但是当我试图输入一个整数时,我得到了一个浮点数。这是为什么?
-10.500000 is not a valid grade. The grade must be an integer.
Insert new grade: 10
10.000000 is not a valid grade. The grade must be an integer.
Insert new grade:
默认情况下numpy
数组只存储单一类型的数据。由于最初它包含一个浮点数(10.5
),所以整个数组都是浮点数。
您需要测试值而不是测试数据类型,例如通过 grades[i].is_integer()
。
这是因为 np.array
默认为浮动。如果你想把数组做成整数格式,就这样做:
foo = np.array([1, 3, 5, 7])
bar = foo.astype(int)