Numeric comparison with user input always produces “not equal” result

后端 未结 4 1676
感情败类
感情败类 2021-01-24 17:25

I want to get a number input by the user via input() and compare it with a specific value, i.e., 3.

However, I have the impression my if statem

相关标签:
4条回答
  • 2021-01-24 17:40

    Python 3 input function returns string.

    Try like this

    start = input("-->: ")
    if start == "3":
        print("successful")
    
    0 讨论(0)
  • 2021-01-24 17:44

    Some things you could do on your own to get to the root of the problem:

    Ways to get to know the type of the object:

    print(type(start)) # prints <class 'str'>
    print(repr(start)) # prints '3'
    

    Unlike Python 2.x, the function input() returns a string object (and does not blindly evaluate the expression provided by the user):

    input([prompt]):

    If the prompt argument is present, it is written to standard output without a trailing newline. The function then reads a line from input, converts it to a string (stripping a trailing newline), and returns that. [...]

    This should give an idea how to fix it (compare numbers to numbers).

    For further reading:

    • https://docs.python.org/3/library/functions.html#input
    • https://docs.python.org/3/library/functions.html#type
    • https://docs.python.org/3/library/functions.html#repr
    • How does Python compare string and int?
    • Asking the user for input until they give a valid response
    0 讨论(0)
  • 2021-01-24 17:46

    You can also try this as an alternative:

    Adding int will convert the variable to int data type.

    input = int(raw_input("Enter a num: "))
    if input == 3:
       print "Successful"
    
    0 讨论(0)
  • 2021-01-24 17:50

    you should check your tabs (I recomend you to use four spaces, not regular tabs and not to mix them)

    start = 0
    start = input("-->:")
    if start == "3":
        print("Success")
    
    0 讨论(0)
提交回复
热议问题