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
当你比较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.")
或者正如其他答案所说,您可以在分配n
和m
时转换为int
。