0
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

4

3 回答 3

2

比较时n == len(inptArray),它们不相等,因为nis astrlen(inptArray)is an int

当您设置nandm时,将它们转换为int类型。

n = int(strArrSize[0])
m = int(strArrSize[1])
于 2018-08-15T18:07:06.443 回答
1

让我们通过检查值来调试它:

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

输出:

|1| <class 'str'>
1

input返回字符串。当你拆分它时,你会得到一个更小的字符串。因此,n是一个字符串值。 len返回一个整数。由于它们属于不同的基本类型,因此它们不能相等。

n = int(strArrSize[0]). 您可能希望对m.

于 2018-08-15T18:06:51.853 回答
0

你要确保你正在比较同类。比较'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在分配nand时转换为m.

于 2018-08-15T18:06:11.827 回答