복붙노트

[PYTHON] "정렬 할 수없는 유형 : int () <str ()"

PYTHON

"정렬 할 수없는 유형 : int ()

파이썬에서 은퇴 계산기를 만들려고합니다. 문법에는 아무런 문제가 없지만 다음 프로그램을 실행할 때 :

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()

내가 어떻게이 문제를 해결할 수 있을지 생각해?

해결법

  1. ==============================

    1.여기서 문제는 input ()이 파이썬 3.x에서 문자열을 반환한다는 것입니다. 그래서 비교할 때 문자열과 정수를 비교하고 있습니다. 문자열이 단어이면 어떻게 될까요? 하나는 문자열과 숫자를 비교합니까?) -이 경우 Python은 추측하지 않고 오류를 던집니다.

    여기서 문제는 input ()이 파이썬 3.x에서 문자열을 반환한다는 것입니다. 그래서 비교할 때 문자열과 정수를 비교하고 있습니다. 문자열이 단어이면 어떻게 될까요? 하나는 문자열과 숫자를 비교합니까?) -이 경우 Python은 추측하지 않고 오류를 던집니다.

    이 문제를 해결하려면 int ()를 호출하여 문자열을 정수로 변환하십시오.

    int(input(...))
    

    메모로서 10 진수를 처리하려면 float () 또는 decimal.Decimal () 중 하나를 사용하는 것이 좋습니다 (정확도 및 속도 요구에 따라 다름).

    while 루프와 카운팅에 반대되는 일련의 숫자에 대해 반복적으로 반복하는 python 방식은 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))
    
  2. ==============================

    2.단지 부수적 인 점이 있습니다. 파이썬 2.0에서는 무엇이든 비교할 수 있습니다 (int를 문자열로 비교). 이것은 명시 적이지 않았기 때문에 3.0에서 변경되었습니다. 이는 서로간에 무의미한 값을 비교하거나 유형을 변환하는 것을 잊어 버릴 때 문제가되지 않으므로 좋은 것입니다.

    단지 부수적 인 점이 있습니다. 파이썬 2.0에서는 무엇이든 비교할 수 있습니다 (int를 문자열로 비교). 이것은 명시 적이지 않았기 때문에 3.0에서 변경되었습니다. 이는 서로간에 무의미한 값을 비교하거나 유형을 변환하는 것을 잊어 버릴 때 문제가되지 않으므로 좋은 것입니다.

  3. from https://stackoverflow.com/questions/14886881/unorderable-types-int-str by cc-by-sa and MIT license