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

0
15 авг. '18 в 18:00
источник поделиться
3 ответа

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

Когда вы устанавливаете n и m, применяйте их к типам int.

n = int(strArrSize[0])
m = int(strArrSize[1])
+2
15 авг. '18 в 18:07
источник

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

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

Выход:

|1| <class 'str'>
1

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

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

+1
15 авг. '18 в 18:06
источник

Вы хотите убедиться, что вы сравниваете это с подобным. Сравнение '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.

0
15 авг. '18 в 18:06
источник

Посмотрите другие вопросы по меткам или Задайте вопрос