Boolean为Python代码提供了意想不到的答案?

时间:2014-03-21 17:57:52

标签: python

我不确定我在做什么导致这个python代码给我一个权重答案。这是我的代码:

x = raw_input("Find Cube Root of A Perfect Cube: ")
root = 3
foo = root * root * root
bar = x
print root * root * root
print x
print (root * root * root) < x

print (foo < bar)

这些是给出的印刷陈述:

27 12 真正 真

我理解前两个,当然,但为什么我会得到这样一个奇怪的答案? 27显然大于12。

4 个答案:

答案 0 :(得分:2)

尝试打印foobar的类型:

print type(foo), type(bar)

你会得到

>>> <type 'int'> <type 'str'>

为什么你会得到一个字符串?因为raw_input()返回一个字符串。在Python 2.x中,字符串总是大于整数,这就是你得到结果的原因。

在Python 3.x中,您将获得TypeError

TypeError: unorderable types: int() < str()

如何解决这个问题?您可以将该字符串转换为整数:

x = int(raw_input("Find Cube Root of A Perfect Cube: "))

答案 1 :(得分:1)

xstr个对象,因此bar也是foo。但是,intint,在Python 2.x中,任何str都小于任何{{1}},因为不等类型的值按字典顺​​序按类型进行比较名称。在Python 3中,比较会引发错误。

答案 2 :(得分:1)

raw_input返回一个字符串。您正在比较字符串和数字。将x转换为x = int(x)的数字。

答案 3 :(得分:0)

x投射到这样的int:

int(x)

这会给你一个整数,因为raw_input会返回一个字符串。