所以我正在创建一个显示数字系统的程序,但是我遇到了第一个问题。该程序将从用户那里获取一个数字,然后在整个程序中使用该数字,以便解释几个计算机科学概念。
在解释我的第一部分编号系统时,程序会说出它是什么类型的编号。我这样做是通过将字符串转换为浮点数来实现的。如果浮点数后面只有“.0”,那么它将它转换为整数。
目前我正在使用此代码
while CorrectNumber == False:
try:
Number = float(NumberString) - 0
print (Number)
except:
print ("Error! Not a number!")
这很有用,因为它显示用户是否输入了数字。但是,我不确定如何检查小数位后的值,以检查是否应将其转换为整数。有什么提示吗?
答案 0 :(得分:6)
如果字符串可以转换为整数,则它应该只是数字。值得注意的是,正如@cwallenpoole所说,这种方法不适用于负面输入,因为' - '字符。你可以这样做:
if NumberString.isdigit():
Number = int(NumberString)
else:
Number = float(NumberString)
如果您已将号码确认为浮动,则可以始终使用is_integer
(使用否定号码):
if Number.is_integer():
Number = int(Number)
答案 1 :(得分:3)
不确定我是否遵循了这个问题,但这是一个想法:
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
答案 2 :(得分:0)
检查小数部分是否有任何非零数字。
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.
答案 3 :(得分:0)
这是检查方法,
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"
答案 4 :(得分:0)
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)```
答案 5 :(得分:-1)
Here's my gist不仅检查正负整数,还检查正负浮点数。它还会检查字符串是否只是正常的非数字。
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()存在too laid back in what it calls a float.
的问题。