2012-12-06 76 views
0

我正在開發一些IMAP檢查器。現在,收件箱計數將按以下佈局打印一條消息:['number']。Python如果var不存在,那麼

現在這個數字被分割爲號碼在var num中。請看下面的代碼:

for num in data[0].split(): 
    print num 

現在的問題是,如果沒有任何新郵件NUM不存在的,所以我想一個if語句是這樣的:

if <num doesn't exist>: print "No new emails found." 

但是,什麼是應該如果聲明看起來像?

+0

數據是包含數字的列表的名稱 - [數字]?請張貼真實名單的樣子。 –

+0

'print'之前需要4個空格嗎? – zenpoy

回答

4

最Python的方式來實現你似乎什麼想要的是:

nums = data[0].split() 
for num in nums: 
    print num 
if not nums: 
    print "No new emails found" 

因爲代碼正好反映了意圖。

+0

感謝這工作! – SkyDrive26

+1

即使編輯被批准,我仍然認爲'if-else'是一個更具可讀性的選項。雖然,純粹是個人品味的問題。 – bereal

2

檢查this site,他們有一個有用的片段,以檢查是否該變量存在,或者如果它是無:

# Ensure variable is defined 
try: 
    num 
except NameError: 
    num = None 

# Test whether variable is defined to be None 
if num is None: 
    some_fallback_operation() 
else: 
    some_operation(num) 
+0

爲什麼不只是 - '如果num:some_operation(num)else:some_fallback_operation()'? –

+0

我決定添加兩個以防他在未定義變量和無變量之間做出區別。你的解決方案也可以。 – alemangui

1

檢查分割數據的大小,並使用它作爲您的條件:

for num in data[0].split(): 
    print num 
if len(data[0].split()) == 0: 
    print "No new emails found." 

更優雅的方式:

for num in data[0].split(): 
    print num 
if not data[0].split(): 
    print "No new emails found." 
+0

還有更多的方法來做這個檢查。看[這個問題](http://stackoverflow.com/questions/53513/python-what-is-the-best-way-to-check-if-a-list-is-empty)。 – kahowell

+0

沒有工作,但無論如何感謝。 – SkyDrive26

+0

現在修正了頂部示例(錯位圓括號和缺少冒號),以防有人回到此處。底部的例子爲我工作。 – kahowell

1

我會做

num = None 
for num in data[0].split(): 
    print num 
if num is None: 
    print "No new emails found." 

如果None是一個有效的數據部分,使用

num = sentinel = object() 
for num in data[0].split(): 
    print num 
if num is sentinel: 
    print "No new emails found." 

代替。

相關問題