输入后python上的类型条件

时间:2017-10-19 14:49:52

标签: python-3.x

我是编程的初学者,我想要的是设置一个条件,我写一个实数,并希望程序告诉我它是小数还是整数。

我从:

开始
x = float(input("Writte a real number: "))

然后我考虑使用双重条件,我会做类似的事情:

if type(x)==int:
    print("integer number")

另一个用float而不是int(或者使用else,因为我之前说过写一个实数)。但我想这不是正确的,因为我将x预定义为浮点数。另一个问题是像2.0或3.0这样的数字,因为它们是整数但我会把它们作为分数。

2 个答案:

答案 0 :(得分:1)

你可以通过使用整数的重要属性来实现这一点:整数的 floor ceiling 值是相同的;而对于浮点数,这些值会相差1。

所以,你可以这样做:

import math
x = float(input("Writte a real number: "))
if math.ceil(x) == math.floor(x):
    print("integer number")
  • 数字x的最小值是小于或等于x的最大整数。
  • 数字x的上限是大于或等于x的最小整数。

您可以看到一些楼层和天花板的示例here

答案 1 :(得分:0)

受@ Carcigeniacte的评论启发。您最初可以将其保留为字符串,检查彼此之间的转换;然后,如果它们相同,则为int,否则为float。之后,将其转换为适合以后计算的数值类型。只是不要忘记检查输入错误:

while True:
    x = input('write a real number: ')
    try:
        float(x)  # Checking the input can be converted to a number
        break

    except ValueError:
        print('\nPlease input a number')  # runs if it can't be converted
        continue

if float(x) == int(x):  # looking for integers
    print('\nInteger Number')
    x = int(x)

else:
    print('\nFractional Number')
    x = float(x)