“Unorderable类型:INT()<STR()”(“Unorderable types:

2019-07-19 23:03发布

我想做一个退休计算器现在Python的。 这没有什么错的语法,但是当我运行下面的程序:

def main():
    print("Let me Retire Financial Calculator")
    deposit = input("Please input annual deposit in dollars: $")
    rate = input ("Please input annual rate in percentage: %")
    time = input("How many years until retirement?")
    x = 0
    value = 0
    while (x < time):
        x = x + 1
        value = (value * rate) + deposit
        print("The value of your account after" +str(time) + "years will be $" + str(value))

它告诉我说:

Traceback (most recent call last):
  File "/Users/myname/Documents/Let Me Retire.py", line 8, in <module>
    while (x < time):
TypeError: unorderable types: int() < str()

任何想法我怎么能解决这个问题?

Answer 1:

这里的问题是, input()返回Python 3.x都有一个字符串,所以当你做你的比较,你是比较一个字符串和一个整数,这是不明确的(如果该字符串就是一个字,如何做一个比较字符串和数字) - 在这种情况下,Python不猜测,它抛出一个错误。

为了解决这个问题,只需调用int()将字符串转换为整数:

int(input(...))

作为一个说明,如果你要处理小数,你将要使用的一个float()decimal.Decimal()取决于您的精度和速度的需求)。

请注意,循环在一系列的数字(而不是一个较为Python的方式while环和计数)是使用range() 例如:

def main():
    print("Let me Retire Financial Calculator")
    deposit = float(input("Please input annual deposit in dollars: $"))
    rate = int(input ("Please input annual rate in percentage: %")) / 100
    time = int(input("How many years until retirement?"))
    value = 0
    for x in range(1, time+1):
        value = (value * rate) + deposit
        print("The value of your account after" + str(x) + "years will be $" + str(value))


Answer 2:

只是一个侧面说明,在Python 2.0,你可以比较什么东西(INT字符串)。 由于这是不明确的,它在3.0改变了,这是一件好事,因为你没有运行到毫无意义的值相互比较,或当你忘了一个类型转换的麻烦。



文章来源: “Unorderable types: int() < str()”