我正在输入代码来检查数字是否为正数、负数以及是否有小数。有没有更快的方法来检查小数点?
n = input("Type a number: ")
try:
n = int(n)
if n > 0:
print("n is positive")
elif n < 0:
print("n is negative")
else:
print("n is zero")
except ValueError:
n = float(n)
if n > 0:
print("n is positive and decimal")
elif n < 0:
print("n is negative and decimal")
else:
print("n is zero")
print(n)
input()
答案 0 :(得分:1)
然而,如果我们想避免将字符串转换为数字类型和使用异常的成本,我们也可以依靠正则表达式来直接断言所提供文字的符号和类型。
例如,通过编写如下内容:
#!/usr/bin/env python3
import re
def process(txt):
pat = re.compile(r'^(-)?[0-9]+(\.[0-9]+)?$')
grep = pat.match(txt)
print(txt, 'is:')
if grep is None:
print('not a numeric string')
else:
if grep.group(1) is None:
print('some ', end='')
else:
print('some negative ', end='')
if grep.group(2) is None:
print('integer')
else:
print('decimal')
process('-12')
process('-12.5')
process('12')
process('12.5')
process('foo')
process(500*'9')
process(str(input("Type a number: ")))
答案 1 :(得分:0)
您始终可以使用 float
然后检查 .is_integer()
方法:
n = float(input("Type a number: "))
if n > 0:
print("n is positive")
elif n < 0:
print("n is negative")
else:
print("n is zero")
if n.is_integer():
print("n is integral")
else:
print("n isn't integral")
print(n)
input()
要明确:现在 n
将总是具有 float
类型,即使用户输入例如2
。 is_integer
只是告诉您浮点数是否可以表示为整数。
在浮点数的限制下,这将不再可靠地工作:
>>> float("12345678901234567.5").is_integer()
True
>>> float("1"+ "0"*309).is_integer()
False
答案 2 :(得分:0)
假设您正在寻找专门的“小数”而不仅仅是浮点数,您可以使用使用 floor
函数制作的这个学校教授的算法。
>>> import math
>>> def is_int(x):
... y=math.floor(x)+math.floor(-x)
... if y==0:
... print("It's an integer")
... if y==-1:
... print("It's a decimal")
...
>>> is_int(1)
It's an integer
>>> is_int(1.3)
It's a decimal
答案 3 :(得分:0)
这是使用 ![image|12x12](https://www.flaticon.com/svg/vstatic/svg/497/497738.svg?token=exp=1611421025~hmac=7f2922952f84017ad7e06a850bb5ce66)
运算符的另一个版本。
%
答案 4 :(得分:-1)
简单的方法
n = input("Type a number: ")
if n.find("."):
print("n is decimal")
elif n>0:
print("n is positive")
elif n<0:
print("n is negative")
elif n==0:
print("n is 0")
else:
print("n is something else")
print(n)
您可以通过这种方式轻松检查它是否为十进制。但是,如果你想检查它是否是十进制整数。然后,尝试以下源代码
if n.find(".") and n>0:
print("n is positive decimal")
elif n.find(".") and n<0:
print("n is negative decimal")
你必须把它写在上面而不是写在下面。甚至,您可以将其替换为
if n.find("."):
print("n is decimal")
因为,在这里您要检查它是否为十进制。但是,在此代码上方,您正在检查它是否为负十进制。所以,你可以更换它。