Comparing numbers give the wrong result in Python

前端 未结 4 1897
余生分开走
余生分开走 2020-11-29 12:59

If I enter any value less than 24, it does print the \"You will be old...\" statement. If I enter any value greater than 24 (ONLY up to 99), it prints the \"you are old\" st

相关标签:
4条回答
  • 2020-11-29 13:02

    The string '100' is indeed less than the string '24', because '1' is "alphabetically" smaller than '2'. You need to compare numbers.

    my_age = int(input())
    if my_age > 24:
    
    0 讨论(0)
  • 2020-11-29 13:13

    You're testing a string value myAge against another string value '24', as opposed to integer values.

    if myAge > ('24'):
         print('You are old, ' + myName)
    

    Should be

    if int(myAge) > 24:
        print('You are old, {}'.format(myName))
    

    In Python, you can greater-than / less-than against strings, but it doesn't work how you might think. So if you want to test the value of the integer representation of the string, use int(the_string)

    >>> "2" > "1"
    True
    >>> "02" > "1"
    False
    >>> int("02") > int("1")
    True
    

    You may have also noticed that I changed print('You are old, ' + myName) to print('You are old, {}'.format(myName)) -- You should become accustomed to this style of string formatting, as opposed to doing string concatenation with + -- You can read more about it in the docs. But it really doesn't have anything to do with your core problem.

    0 讨论(0)
  • 2020-11-29 13:21
    print ('What is your name?')
    myName = input ()
    print ('Hello, ' + myName)
    print ('How old are you?, ' + myName)
    myAge = input ()
    if int(myAge) > 24:
         print('You are old, ' + myName)
    else:
         print('You will be old before you know it.')
    

    Just a small thing about your code. You should convert the input from myAge to an integer (int) (number) and then compare that number to the number 24.;

    Also, you should usually not add strings together as it is consider non-pythonic and it slow. Try something like print ('Hello, %s' % myName) instead of print ('Hello, ' + myName).

    Python Strings Tutorial

    0 讨论(0)
  • 2020-11-29 13:24

    Use int(myAge). I always use raw_input and also, you dont have to print your questions. Instead put the question in with your raw_inputs like so:

    myName = raw_input("Whats your name?")
    print ('Hello, ' + myName)
    myAge = raw_input('How old are you?, ' + myName)
    if int(myAge) > ('24'):
        print('You are old, ' + myName)
    else:
        print('You will be old before you know it.')
    
    0 讨论(0)
提交回复
热议问题