我想在Python中将变量设置为true或false。但是true
和false
这两个词被解释为未定义的变量:
#!/usr/bin/python
a = true;
b = true;
if a == b:
print("same");
我得到的错误:
a = true
NameError: global name 'true' is not defined
设置变量true或false的python语法是什么?
Python 2.7.3
答案 0 :(得分:40)
首先回答您的问题,您可以通过为其分配True
或False
将变量设置为true或false:
myFirstVar = True
myOtherVar = False
如果您的情况基本上与此类似:
if <condition>:
var = True
else:
var = False
然后直接简单地分配条件的结果就容易得多:
var = <condition>
在你的情况下:
match_var = a == b
答案 1 :(得分:12)
match_var = a==b
应该足够了
你不能在变量名中使用 - 因为它认为是match
(减号)var
match=1
var=2
print match-var #prints -1
答案 2 :(得分:5)
Python布尔关键字是True
和False
,请注意大写字母。像这样:
a = True;
b = True;
match_var = True if a == b else False
print match_var;
编译并运行时,会打印:
True
答案 3 :(得分:0)
如@Spixel所述,您没有为变量分配布尔值(True或False-以大写字母开头)。相反,您已为变量分配了文本值(ns tst.demo.core
(:use tupelo.core demo.core tupelo.test))
(defn accum
[conds]
(cond-it-> #{} ; accumulate result in a set
(contains? conds :cond-1) (conj it :msg-1)
(contains? conds :cond-2) (conj it :msg-2)
(contains? conds :cond-3) (conj it :msg-3)
(contains? it :msg-3) (disj it :msg-1) ; :msg-3 doesn't like :msg-1
))
; remember that sets are unsorted
(dotest
(is= #{:msg-1} (accum #{:cond-1}))
(is= #{:msg-3} (accum #{:cond-1 :cond-3}))
(is= #{:msg-1 :msg-2} (accum #{:cond-2 :cond-1}))
(is= #{:msg-2 :msg-3} (accum #{:cond-2 :cond-3}))
(is= #{:msg-2 :msg-3} (accum #{:cond-3 :cond-2 :cond-1 }))
)
。因此,存在变量未定义错误。
如果将这些文本包括在引号(true)
中,那么您将获得期望的结果(a = 'true' and b = 'true')
。
答案 4 :(得分:0)
您必须使用大写的True和False而不是True和false