2015-05-27 41 views
0

我正在處理函數中使用變量的多種不同方法,但有一種方法在搜索網絡一個小時後根本找不到。我只是希望用戶能夠輸入十進制數字,如「23.45」,程序打印出確切的數字。我嘗試了多種不同的方式,並且總是以一個錯誤或一個整數結束。我在PowerShell中運行它。下面是一段代碼:從用戶輸入後返回小數的問題

def person(age, gender): 
    print "You are %d years old." % age 
    print "You are a %s" % gender 

how_old = eval(raw_input("How old are you? ")) 
age = float(how_old) 

person(age, "Male") 
+0

我不確定您習慣使用哪種語言,但那不是PowerShell代碼。 – TheMadTechnician

+0

對不起,這是python 2.7。 –

+0

我在記事本++中編寫了這個代碼,我在PowerShell中運行 –

回答

0

變化

print "You are %d years old." % age 

print "You are %g years old." % age 

順便說一句,eval沒有必要在那裏,float轉換就足夠了。

+0

謝謝,這個工作非常完美! –

0

如果要顯示剛好用戶鍵入的內容然後使用%s以與第二個打印語句相同的方式,然後刪除第6行上的浮動轉換。使用%g或%d將導致它輪例如,如果有人輸入21.345676543,則可以輸入小數點後的位置。當然,我想不出有什麼可能的原因,有人會知道他們的年齡的細節,但你永遠不知道!

我第二關於不需要eval的dlask。

+0

我看到你的方式也有效。我認爲使用%s將無法識別輸入的數字作爲實際數字,以防我稍後想要使用數學計算,但我想,當我將浮點數函數放入年齡變量時,會考慮到這一點。這是%d真的讓我失望。 –