蟒蛇 - 比较数字.我正在比较 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

当你比较n == len(inptArray)时,它们不相等,因为n是一个strlen(inptArray)是一个int

设置nm时,将它们强制转换为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,因为您正在将strint进行比较。

这是纠正它的一种方法:

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.")

或者正如其他答案所说,您可以在分配nm时转换为int

相关内容

  • 没有找到相关文章

最新更新