2009-12-17 171 views
-2

如果:布爾查詢

x = 0 
b = x==0 

和I打印是將打印 '真'

但如果我沒有:

x = 0的
B = X == 3

我打印它會是假的。 而不是它打印false我將如何採取布爾值'b'來打印我想要的文本?

讓我進一步解釋:

bool = all(n > 0 for n in list) 

if bool != 'True': 
    print 'a value is not greater than zero' 

但它打印什麼?

+3

這是功課嗎?請用[作業]標記作業。 – 2009-12-17 16:17:13

+0

對不起,我錯過了寫下這個問題 – harpalss 2009-12-17 16:19:01

+2

@harpalss,所以編輯你的問題,使其正確,很容易! – 2009-12-17 16:19:52

回答

6

這是什麼意思?

x = 0 
if x != 3: 
    print "x does not equal 3" 
+0

雖然很好,但這個問題變形了;也許這不再合適。 – 2009-12-17 19:28:15

2
>>> x = 0 
>>> if not x == 3: print 'x does not equal 3' 
x does not equal 3 

LTE我進一步解釋:

>>> list = [-1, 1, 2, 3] 
>>> if not all(n > 0 for n in list): print 'a value is not greater than zero' 
a value is not greater than zero 

# => or shorter ... 
>>> if min(list) < 0: print 'a value is not greater than zero' 
a value is not greater than zero 

注意list是一個內置的,不應該被用來作爲一個變量名。

>>> list 
<type 'list'> 
>>> list = [1, 2, "value not greater than 0"] 
>>> list 
[1, 2, "value not greater than 0"] 
>>> del list 
>>> list 
<type 'list'> 
... 
4

if語句作爲其他的答案表明一種可能性(你可以添加一個else條款打印特定在每種情況下的東西)。更直接的是if/else操作

print('equality' if b else 'diversity') 

你也可以使用索引,因爲假有int值0和真實的int值1:

print(['different', 'the same'][b]) 

但我覺得有點少可讀性比if變體可讀。

2
a = lambda b :("not true","true")[b == 3] 
print a(3) 

會爲你做它,如果你想要把它放在一個拉姆達

+0

這是我在OP進一步解釋問題時想到的第一件事。 – 2009-12-17 16:34:33

+4

如果OP不確定如何正確使用布爾變量,那麼lambda表達式的概念可能會稍微高級。 – 2009-12-17 16:56:40

+0

在我看來,他理解布爾人就好,但他們之間的關係與字符串以及作業之間混淆。 – 2009-12-21 02:50:34

0

你需要做印刷自己,大家都建議在這裏。

值得注意的是,某些語言(例如,斯卡拉,紅寶石,Groovy中)有語言功能,使您能夠編寫:

x should be(3) 

這將報告:

0 should be 3 but is not. 

在Groovy中,與Spock testing framework,你可以寫:

def "my test": 
    when: x = 0 
    expect: x == 3 

那就輸出:

條件不滿意:

x == 3 
| | | 
0 | 3 
false 

雖然我不認爲這可能幹淨利落。

3

刪除引號真:

bool = all(n > 0 for n in list) 

if bool != True: 
    print 'a value is not greater than zero' 

或者,你也可以檢查錯誤:

bool = all(n > 0 for n in list) 

if bool == False: 
    print 'a value is not greater than zero' 

有寫它的其他一些「捷徑」的方式,但由於你初學者讓我們不要混淆不必要的話題。

6

我想也許下面將有助於緩解你的一些困惑......

>>> 0==0 
True 
>>> 'True' 
'True' 
>>> (0==0) == 'True' 
False 
>>> (0==0) == True 
True 
>>> 
0
>>> 'True' is not True 
True 

「真」是一個字符串

真正是一個布爾

他們什麼都沒有除了巧合之外,彼此之間也是如此。字符串值恰好與布爾文字具有相同的字母。但這只是一個巧合。