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

7 python number-systems python-3.x

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

在解释我的第一部分编号系统时,程序会说出它是什么类型的编号.我这样做是通过将字符串转换为浮点数来实现的.如果浮点数后面只有".0",那么它将它转换为整数.

目前我正在使用此代码

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

这很有用,因为它显示用户是否输入了数字.但是,我不确定如何检查小数位后的值,以检查是否应将其转换为整数.有小费吗?

kjm*_*erf 8

不确定我是否遵循了这个问题,但这里有一个想法:

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

for number in test:
    try:
        print(int(number))
    except ValueError:
        print(float(number))
Run Code Online (Sandbox Code Playgroud)

返回:

1.1
2.1
3.0
4
5
6.12
Run Code Online (Sandbox Code Playgroud)

  • 请不要鼓励在未指定某些异常类型的情况下编写“ except:”。它应该是“除了 ValueError:” (6认同)

Moh*_*med 8

这是检查方法,

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"
Run Code Online (Sandbox Code Playgroud)


fra*_*ima 6

如果字符串可以转换为整数,则它应该只是数字.应该注意的是,正如@cwallenpoole所说,这种方法不适用于负面输入,因为" - "字符.你可以这样做:

if NumberString.isdigit():
    Number = int(NumberString)
else:
    Number = float(NumberString)
Run Code Online (Sandbox Code Playgroud)

如果您已将Number确认为浮点数,则可以始终使用is_integer(使用底片):

if Number.is_integer():
    Number = int(Number)
Run Code Online (Sandbox Code Playgroud)

  • 不适用于负数。 (3认同)
  • 使用`int(NumberString)`(在`try`和句柄`ValueError`中)而不是使用`.isdigit`来检查字符串是否可以解析为`int`. (3认同)

Sri*_*ila 5

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

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
Run Code Online (Sandbox Code Playgroud)

测试功能:

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.')
Run Code Online (Sandbox Code Playgroud)

它打印:

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.
Run Code Online (Sandbox Code Playgroud)