如何将布尔真值输入变量?

How do I input boolean Truth values to a variable?

#executing the XOR gate

print('Enter a truth value for each of the variables and get A XOR B.')
print('Enter A')
a = input()
print('Enter B')
b = input()
print('The XOR gate value is:')
print(((a and (not b)) or ((not a) and b)))

所以很明显,我正在尝试将布尔关键字 TrueFalse 输入变量 ab 以获得 XOR 的输出门.

这里的问题是输入函数正在评估 TrueFalse 输入为字符串而不是布尔注册字,并且程序总是返回 False 作为答案。

我想知道是否有一种方法可以在变量中输入和存储布尔值。

任何非空字符串的计算结果都是布尔值 True。即使 bool('False')True.

您可以使用 a = True if input().lower() in ('t', 'true') else False
(或更短的形式,a = input().lower() in ('t', 'true')
b 相同。

当然这不一定要在一行中,你可以决定使用什么逻辑来决定哪些字符串是allowed/interpreted作为TrueFalse

不要eval的路。

ast.literal_eval 可以使用,但会接受任何文字(整数、列表、字符串)。

a = input()[0].lower() in '1ty'

这接受 1trueyes(以及其他)以不区分大小写的方式作为 True。

只需将输入值与 True if 进行比较,其为真 return a = True else a =False。默认情况下 input() 接受一个字符串作为输入,所以,我们可以这样转换它。

#executing the XOR gate

print('Enter a truth value for each of the variables and get A XOR B.')

print('Enter A')

a = True if input() == 'True' else False

print('Enter B')

b = True if input() == 'True' else False

print('The XOR gate value is:')

print(((a and (not b)) or ((not a) and b)))

因此,输入 TrueFalse