我一直在掙扎以下布爾問題:功能處理浮點數來產生一個布爾
寫一個函數even_int消耗任何類型的數據,產生真,如果是偶數,和否則產生False。
我寫道:在你的程序
def even_int(any):
return type(any) != type("a") and float(any % 2 == 0.0)
反饋:
確保當輸入一個浮點數的功能工作。
不太瞭解此反饋。我把浮子放在前面,這樣就應該覆蓋。我也試過沒有浮點數或小數點。0
我一直在掙扎以下布爾問題:功能處理浮點數來產生一個布爾
寫一個函數even_int消耗任何類型的數據,產生真,如果是偶數,和否則產生False。
我寫道:在你的程序
def even_int(any):
return type(any) != type("a") and float(any % 2 == 0.0)
反饋:
確保當輸入一個浮點數的功能工作。
不太瞭解此反饋。我把浮子放在前面,這樣就應該覆蓋。我也試過沒有浮點數或小數點。0
我認爲你應該直接檢查是否有整數類型。我也不認爲你需要把漂浮any % 2 == 0
def even_int(value):
return isinstance(value, int) and value % 2 == 0
編輯: 如果你想接受花車以及,
def even_int(value):
return isinstance(value, (float, int)) and value % 2 == 0
你得太多可能的事情。如果您使用numbers.Real
進行檢查,則一個isinstance
呼叫應該已足夠。
import numbers
def even_int(x):
return isinstance(x, numbers.Real) and not x % 2
注:
In [114]: issubclass(int, numbers.Real)
Out[114]: True
In [115]: issubclass(float, numbers.Real)
Out[115]: True
In [117]: issubclass(str, numbers.Real)
Out[117]: False
我會嘗試這一點 - 這是Python的,因爲它試圖通過轉換爲int(這意味着它適用於字符串作爲請求原諒,而不是許可好吧),並捕獲TypeError
返回False,如果這也不起作用。
def even_int(v):
try:
return int(v) % 2 == 0 #will trigger exception if v cannot be cast to int
except (TypeError, ValueError):
return False
編輯:簡化基於評論
1)'any'對於變量名不是一個好的選擇 - 有一個內建的函數叫做'any',它會影響(儘管我意識到你正在從OPs代碼中獲取它)...... 2)你的整個'嘗試'可以'返回int(值)%2 == 0' ... –
1)好點 - 我使用的OP變量名:)將改變2)是的我意識到這一點,但希望它會有點更清楚我的方式發生了什麼,但將編輯添加:) –
實際上 - 另一個問題 - even_int(2.3)返回true作爲浮點轉換截斷 –
爲什麼你在測試的開始字符串?當有人通過一個列表時會發生什麼? –
你也會產生一個'float()',而不是一個布爾值。你不返回'True',你返回'1.0'。 –
@LiviuIosif如果您的問題已得到充分解決,您可以[接受最能幫助您的答案](https://stackoverflow.com/help/someone-answers)。 –