Python 检查字符串是整数还是浮点

Python 检查字符串是整数还是浮点,python,python-3.x,number-systems,Python,Python 3.x,Number Systems,所以我正在创建一个显示数字系统的程序,但是我在第一个关卡遇到了问题。程序将从用户处获取一个数字,然后在整个程序中使用该数字来解释几个计算机科学概念 在解释我的第一部分“数字系统”时,程序会说明它是什么类型的数字。我是通过将字符串转换成浮点数来实现的。如果浮点数后面只有“.0”,则它会将其转换为整数 目前我正在使用这个代码 while CorrectNumber == False: try: Number = float(NumberString) - 0 print (Numbe

所以我正在创建一个显示数字系统的程序,但是我在第一个关卡遇到了问题。程序将从用户处获取一个数字,然后在整个程序中使用该数字来解释几个计算机科学概念

在解释我的第一部分“数字系统”时,程序会说明它是什么类型的数字。我是通过将字符串转换成浮点数来实现的。如果浮点数后面只有“.0”,则它会将其转换为整数

目前我正在使用这个代码

while CorrectNumber == False:
try:
    Number = float(NumberString) - 0
    print (Number)
except:
    print ("Error! Not a number!")

这很有用,因为它显示用户是否输入了数字。但是,我不确定现在如何检查小数点后的值,以检查是否应将其转换为整数。有什么建议吗?

我不确定我是否理解这个问题,但这里有一个想法:

test = ['1.1', '2.1', '3.0', '4', '5', '6.12']

for number in test:
    try:
        print(int(number))
    except ValueError:
        print(float(number))
返回:

1.1
2.1
3.0
4
5
6.12

如果字符串可转换为整数,则只能是数字。应该注意的是,正如@cwallenpole所说的,这种方法不适用于负输入,因为它具有“-”字符。你可以做:

if NumberString.isdigit():
    Number = int(NumberString)
else:
    Number = float(NumberString)
如果您已将数字确认为浮点数,则始终可以使用
is_integer
(适用于负数):


这将检查小数部分是否有任何非零数字

def is_int(n):
    try:
        float_n = float(n)
        int_n = int(float_n)
    except ValueError:
        return False
    else:
        return float_n == int_n

def is_float(n):
    try:
        float_n = float(n)
    except ValueError:
        return False
    else:
        return True
测试功能:

nums = ['12', '12.3', '12.0', '123.002']

for num in nums:
    if is_int(num):
        print(num, 'can be safely converted to an integer.')
    elif is_float(num):
        print(num, 'is a float with non-zero digit(s) in the fractional-part.')
它打印:

12 can be safely converted to an integer.
12.3 is a float with non-zero digit(s) in the fractional-part.
12.0 can be safely converted to an integer.
123.002 is a float with non-zero digit(s) in the fractional-part.

这是检查的方法

a = '10'
if a.isdigit():
   print "Yes it is Integer"
elif a.replace('.','',1).isdigit() and a.count('.') < 2:
   print "Its Float"
else:
   print "Its is Neither Integer Nor Float! Something else"
a='10'
如果a.isdigit():
打印“是,它是整数”
如果a.replace('.','',1).isdigit()和a.count('.')<2:
打印“它的浮动”
其他:
打印“它既不是整数也不是浮点数!其他东西”
它不仅检查正整数和负整数,还检查正浮点和负浮点。它还检查字符串是否只是一个普通的非数字

def int_float_or_string(string):
    try:
        int(string)  # strict and nice
    except ValueError:
        if is_strictly_float(string): # float() is too permissive, this is better
            return "float"
        else:
            return "string"
    else:
        return "int"

def is_strictly_float(string):
    if string.startswith("-"):
        string = string[1:]
    return "." in string and string.replace(".", "", 1).isdecimal()

int()非常适合检查整数,但float()有一个问题,即

请不要鼓励编写
,除了:
而不指定一些异常类型。它应该是
,ValueError除外:
这是一种更好、更具Python风格的方法。不适用于负数。使用
int(NumberString)
(在
中尝试
并处理
ValueError
)而不是使用
。isdigit
,检查字符串是否可以解析为
int
。解决方案:像这样的只有代码的答案通常在这里被否决。请给出你的答案,并解释你改变了什么或者它是如何工作的。
def int_float_or_string(string):
    try:
        int(string)  # strict and nice
    except ValueError:
        if is_strictly_float(string): # float() is too permissive, this is better
            return "float"
        else:
            return "string"
    else:
        return "int"

def is_strictly_float(string):
    if string.startswith("-"):
        string = string[1:]
    return "." in string and string.replace(".", "", 1).isdecimal()
x=input("Enter a value to check it's  type: ")
def checknumber(a):
    try:
        a=float(a)
        if int(a)/a==1:
            print("This is Integer")
            return a
        elif a/int(a)>1:
            print("This is Float")
            return a
    except ValueError:
        print("This value is String")
        return str(a)
x=checknumber(x)```