2017-10-19 76 views
2

我是編程的初學者,我想要的是放置一個條件,在其中編寫一個實數並希望程序告訴我它是小數還是整數。在輸入後輸入python的條件

我開始有:

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

,然後我想用一個雙重條件中,我會做一些這樣的:

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

和另一個浮動,而不是INT(或者使用別的,因爲我之前說過寫一個實數)。但是我猜這是不對的,因爲我預先把x定義爲一個浮點數。另一個問題是像2.0或3.0這樣的數字,因爲它們是整數,但我會將它們作爲小數。

+0

可能會更容易只是將輸入作爲一個字符串,然後檢查是否存在'。' – Carcigenicate

+0

'print(type(ast.literal_eval(input('enter a number of some sort ...')))'你在做什麼?這樣,如果有人剛剛進入'''',那麼你也會得到一個異常。或者什麼都不是數字... –

+0

不能把輸入作爲字符串,因爲我有更多的條件和一些其他的東西,我想檢查我沒有在這裏提到的數字(只說了關於我有問題的部分) 我仍然不知道literal_eval命令,這使我無法使用。 感謝您的答覆,雖然 –

回答

1

您可以通過使用整數的一個重要特性實現這樣的:地板天花板整數值是相同的;然而,對於一個浮點數,這些值將由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

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)