伙计们,我是编程界的新手,我正全力学习Python。
我现在正被这个问题困扰:
“制定一种算法来验证某个值是否为整数。”
现在的问题是INPUT函数以字符串形式返回类型。如果我将变量强制转换为FLOAT,它将阻止我读取整数。
我该怎么办?
val1 = float(input("enter value")
if type (val1)== int:
print("value is integer")
else:
print("value is NOT integer")
答案 0 :(得分:2)
您可以尝试将输入的字符串隐藏为整数或浮点数:
k = input("enter value:")
try:
k = int(k)
# it is an integer
except ValueError:
try:
k = float(k)
except ValueError:
print("Neither int nor float")
else:
print(k, "is a float")
else:
print(k, "is an integer")
输出:
enter value:44.4
44.4 is a float
enter value:hallo
Neither int nor float
enter value:44
44 is an integer
Doku:
答案 1 :(得分:1)
您可以为此使用try
和except
(可以看看Errors and Exceptions。尝试将input
变成int
,然后根据结果编写相应的打印语句:
val1 = input("enter value")
try:
int(val1)
print("value is integer")
except:
print("value is NOT integer")
答案 2 :(得分:1)
如果您还希望将'3.0'
之类的输入识别为整数(因此所有整数,而不是int
类型的所有值),仅对其调用int
,因为int
无法解析该字符串。
确定值是否为整数的另一种方法是查看是否除以一个余数,因此可以使用取模运算符%
:
val1 = float(input("enter value"))
if val1 % 1 == 0:
print("value is integer")
else:
print("value is NOT integer")
答案 3 :(得分:0)
如果您不希望转换和错误处理。您可以使用ast.literal_eval将字符串转换为Python附带的isinstance来解决您的问题。
from ast import literal_eval
in_val = input('Enter value: ')
# get literal value
l_val = literal_eval(in_val)
# check if it is int
if isinstance(l_val,int):
print('It is integer')
elif isinstance(l_val,float):
print('It is a float')
elif isinstance(l_val,str):
print('It is a string')
else:
print('Not int,float or string')# could be list, dict etc ;)
答案 4 :(得分:-1)
if val1.count('.') == 0:
print("value is NOT integer")
else:
print("value is integer")