簡體   English   中英

Python 中的 if 語句

[英]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() 應返回FalseTrue ,或它們的 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM