raw_input()和带布尔值的数学方程式

时间:2016-04-09 07:29:43

标签: python python-2.7 math boolean

这是我目前的代码:

print "What equation would you like"
a = raw_input()
print "What's", a
b = input()
print a == b

我想提示用户输入数学等式,例如3+4

我一直在尝试使用input()将其转换为Python 3,但是,由于input()实际上会解决方程,下面的下一行会打印出这样的等式的答案:{{1 }}。

由于这个想法试图解决为变量What's 7输入的等式,因此代码的整个概念毫无意义,因为它们可以字面输入a,下一行将打印出来{{1因为7

有没有什么方法可以输入像True这样的公式,实际输出7 == 7而没有Python告诉我最终结果是3+4

哦,关于:Math operations from string,我确实在发布这个问题之前看到了这个帖子,它看起来基本上是让python输出一个完全违背我试图的等式的答案实现。相反,我想让python告诉我,我输入的答案是正确还是不正确,因此是真是假。

关于我以前的帖子,它只是用于回答我手动放入脚本中的等式。但是,由于我想让用户在新脚本中键入数学方程式,因此以前使用的方法不起作用。

我也试过ast.literal_eval(),但是我收到了这个错误......

What's 3+4

2 个答案:

答案 0 :(得分:-1)

raw_input()使用ainput()使用b可能就是您想要的。

在python解释器中测试它会得到预期的输出:

>>> a = raw_input()
3+4
>>> a
'3+4'
>>> b = input()
7
>>> type(b)
<type 'int'>
>>> eval(a)
7

所以你应该可以这样做:

>>> eval(a) == b
true

修改

在阅读其他用户的回复后,似乎不鼓励使用eval(),因为它有潜在的危险。虽然出于简单的测试目的,您应该没问题(如果您打算分发此程序或使其可以从Web访问,您绝对不应该使用eval())。你的代码看起来像这样:

print "What equation would you like"
a = raw_input()
print "What's", a
b = input()
print eval(a) == b

哪个应该使用正确的解决方案True而使用不正确的解决方案False

答案 1 :(得分:-1)

您是否尝试过使用eval

podspec

由于人们认为eval是邪恶的(在你的情况下不应该是一个问题),另一种选择是ast.literal_eval

print "What equation would you like"
a = raw_input()
print "What's", a
b = raw_input()
print eval(a) == eval(b)

然后像上例中那样使用它