[英]If-statement in Python
我對 python 有點懷疑。
x = ''
if x:
print 'y'
所以,它永遠不會打印為“y”
如果我做:
x = 0
if x:
print 'y'
然后它也會做同樣的事情。
那么如果我有 '' 值和 0 值,如果我必須只考慮 0 值,如何區分?
這是因為 object 函數__nonzero__()
和__len__()
將用於評估條件。 從文檔:
object.__nonzero__(self)
調用實現真值檢驗和內置操作
bool()
; 應返回False
或True
,或它們的 integer 等價物 0 或 1。當此方法未定義時,__len__()
(如果已定義),如果其結果為非零,則 object 被視為 true。 如果 class 既沒有定義__len__()
也沒有定義__nonzero__()
,它的所有實例都被認為是真的。
通過重載這些,您也可以用於為自定義類指定此類行為。
至於 if 條件,您可以准確指定要檢查的內容:
if x: # evaluate boolean value implicitly
pass
if x is 0: # compare object identity, see also id() function
pass
if x == 0: # compare the object value
pass
至於隱式 boolean 評估的特殊情況:如果int
對象非零,則認為它們是True
; 如果str
對象的長度不為零,則認為它們為True
。
在 python 中,一個空的可迭代對象(此處為字符串)的條件為 false。
如果您需要明確檢查一個值是否為0
,則必須說x==0
if x != '':
print 'y'
僅在 x 不是''
時有效
我不清楚你真正想要什么 - 你問題的措辭有點混亂 - 但這可能很有啟發性:
>>> test_values = [0,0.00,False,'',None, 1, 1.00, True, 'Foo']
>>> for v in test_values:
if (not v) and (v != ''):
print "Got a logically false value, %s, which was not the empty string ''" % v.__repr__()
Got a logically false value, 0, which was not the empty string ''
Got a logically false value, 0.0, which was not the empty string ''
Got a logically false value, False, which was not the empty string ''
Got a logically false value, None, which was not the empty string ''
這對你不起作用,因為你沒有在你的程序中添加輸入數字 0 的位置這個程序的正確代碼是:
x = int(input("enter the value of x : "))
if x==0:
print("Y")
OUTPUT:輸入x的值:0 Y
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.