Python - сравнение чисел. Я сравниваю 1 с 1, но он терпит неудачу - пожалуйста, посмотрите код - Может кто-нибудь сказать мне, в чем проблема?

if __name__ == '__main__':
    strSize = input()
    inpt  = input()

    strArrSize = strSize.split()
    if (len(strArrSize) ==2):
        n = strArrSize[0]
        m = strArrSize[1]

        inptArray = inpt.split()

        print(n)
        print(len(inptArray))

        if (n == len(inptArray)):
            print("true")
        else:
            print("Given " + str(n) + " integers but entered " + str(len(inptArray)))
    else:
        print("Invalid itnput. The first line must have two space seperated integers.")

Вот вход и выход я получил.

PS S: \ Study \ CH1> python tt.py

1 2

1

1

1

Дано 1 целое число, но введено 1

3 ответа

Когда вы сравниваете n == len(inptArray)они не равны, потому что n это str а также len(inptArray) является int,

Когда вы установите n а также mбрось их int типы.

n = int(strArrSize[0])
m = int(strArrSize[1])

Давайте отладим это, проверив значения:

    print('|'+n+'|', type(n))
    print(len(inptArray))

Выход:

|1| <class 'str'>
1

input возвращает строки. Когда вы разделяете это, вы получаете меньшую строку. Таким образом, n является строковым значением len возвращает целое число Поскольку они имеют разные основные типы, они не могут быть равными.

Исправить это с n = int(strArrSize[0]), Вы, вероятно, захотите сделать то же самое с m,

Вы хотите убедиться, что вы сравниваете подобное с подобным. Сравнение '1' == 1 дам False потому что вы сравниваете str с int,

Вот один из способов исправить это:

strSize = input()
inpt  = input()

strArrSize = strSize.split()
if (len(strArrSize) ==2):
    n = strArrSize[0]
    m = strArrSize[1]

    inptArray = inpt.split()

    print(n)
    print(len(inptArray))

    if (int(n) == len(inptArray)):
        print("true")
    else:
        print("Given " + str(n) + " integers but entered " + str(len(inptArray)))
else:
    print("Invalid itnput. The first line must have two space seperated integers.")

Или, как сказали другие ответы, вы можете преобразовать в int когда вы назначаете n а также m,

Другие вопросы по тегам