我不确定我在做什么导致这个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。
答案 0 :(得分:2)
尝试打印foo
和bar
的类型:
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)
x
是str
个对象,因此bar
也是foo
。但是,int
是int
,在Python 2.x中,任何str
都小于任何{{1}},因为不等类型的值按字典顺序按类型进行比较名称。在Python 3中,比较会引发错误。
答案 2 :(得分:1)
raw_input
返回一个字符串。您正在比较字符串和数字。将x
转换为x = int(x)
的数字。
答案 3 :(得分:0)
将x
投射到这样的int:
int(x)
这会给你一个整数,因为raw_input
会返回一个字符串。